StreamBuilder return List<Widget> 可以吗
Can a StreamBuilder return List<Widget>
flutter中的一个AppBar
需要List<Widget>
作为动作。出于某种原因,我无法找到一种方法来根据 StreamBuilder
.
提供此 属性
我有一个 BehaviorSubject(可以更改为其他类型的流),我在其中添加小部件并且我想在 AppBar 中显示这些小部件(作为操作按钮)
// ....
var appBar = new AppBar(
title: "appTitle",
actions: _getActionWidgets() // <= Can be fed by SteamBuilder?
)
/// ...
// ...
// BehaviorSubject<Widget> actionWidgets;
// ...
List<Widget> _getActionWidgets(){
return StreamBuilder(
... // what can be done here so that this method would return List<Widget>
);
}
大多数示例都是针对“ListView
”使用 ListView.builder(...)
的,这不适用于我这里的情况。
最终目标是使用 StreamBuilder 为 AppBar
的 actions
属性 提供食物并努力寻找方法。感谢您提供任何帮助或指导,感谢您花时间阅读我的问题。
只需用包含 StreamBuilder
:
的单个元素 List
填充 actions
actions: [
StreamBuilder(
builder: (context, snapshot) {
return Row(children: [
// Your widgets here
]);
}
),
]
没有。这不是个案。在您的案例中,操作通常是按钮(FlatButton、IconButton 等)。您的案例可能如下所示:
class Bloc {
final _subject = BehaviourSubject<List<Widget>>();
...
}
void initState() {
super.initState();
// Prepare actions depending on condition
final actions = [
FlatButton(child: Text('Action 1'), onPressed: () {}),
FlatButton(child: Text('Action 2'), onPressed: () {}),
];
bloc.setActions(actions); // indeed send actions to sink
}
Widget build(BuildContext context) {
return StreamBuilder<List<Widget>>(
stream: bloc.actionStream, // Function of `bloc` which returns Stream<List<Widget>> (indeed IconButton, FlatButton)
builder: (context,snapshot) {
return Scaffold(
appBar: AppBar(
actions: snapshot.hasData? snapshot.data : <Widget>[],
),
);
}
);
}
flutter中的一个AppBar
需要List<Widget>
作为动作。出于某种原因,我无法找到一种方法来根据 StreamBuilder
.
我有一个 BehaviorSubject(可以更改为其他类型的流),我在其中添加小部件并且我想在 AppBar 中显示这些小部件(作为操作按钮)
// ....
var appBar = new AppBar(
title: "appTitle",
actions: _getActionWidgets() // <= Can be fed by SteamBuilder?
)
/// ...
// ...
// BehaviorSubject<Widget> actionWidgets;
// ...
List<Widget> _getActionWidgets(){
return StreamBuilder(
... // what can be done here so that this method would return List<Widget>
);
}
大多数示例都是针对“ListView
”使用 ListView.builder(...)
的,这不适用于我这里的情况。
最终目标是使用 StreamBuilder 为 AppBar
的 actions
属性 提供食物并努力寻找方法。感谢您提供任何帮助或指导,感谢您花时间阅读我的问题。
只需用包含 StreamBuilder
:
List
填充 actions
actions: [
StreamBuilder(
builder: (context, snapshot) {
return Row(children: [
// Your widgets here
]);
}
),
]
没有。这不是个案。在您的案例中,操作通常是按钮(FlatButton、IconButton 等)。您的案例可能如下所示:
class Bloc {
final _subject = BehaviourSubject<List<Widget>>();
...
}
void initState() {
super.initState();
// Prepare actions depending on condition
final actions = [
FlatButton(child: Text('Action 1'), onPressed: () {}),
FlatButton(child: Text('Action 2'), onPressed: () {}),
];
bloc.setActions(actions); // indeed send actions to sink
}
Widget build(BuildContext context) {
return StreamBuilder<List<Widget>>(
stream: bloc.actionStream, // Function of `bloc` which returns Stream<List<Widget>> (indeed IconButton, FlatButton)
builder: (context,snapshot) {
return Scaffold(
appBar: AppBar(
actions: snapshot.hasData? snapshot.data : <Widget>[],
),
);
}
);
}