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 为 AppBaractions 属性 提供食物并努力寻找方法。感谢您提供任何帮助或指导,感谢您花时间阅读我的问题。

只需用包含 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>[],
        ),
      );
    }
  );
}