首页 > 解决方案 > Streambuilder 在收到流时如何工作?

问题描述

因为我想并行处理多个流,所以我对 Streambuilder 的工作原理很感兴趣。我是否正确理解当 Streambuilder 接收到流时,它会更新构建方法?

目前,当 Streambuilder 接收到一个流时,它每次都会更新整个小部件的状态。我认为它只更新 streambuilder 中的子小部件(在本例中为文本),而不是完整的小部件。

  Widget build(BuildContext context) {
    return Scaffold(
      body: Stack(
        children: <Widget>[
          StreamBuilder<Map>(
              stream: NumberCreator().stream,
              builder: (context, snapshot) {
                return Text(snapshot.data['test']);
              }),
          StreamBuilder<Map>(
              stream: OtherCounter().stream,
              builder: (context, snapshot) {
                return Text(snapshot.data['test2']);
              }),
        ],
      ),
    );
  }

我想在有状态小部件的堆栈中使用多个流构建器。将流构建器外包给他们自己的无状态小部件是否更好,或者推荐的架构是什么?

标签: flutterdart

解决方案


您可以将 StreamBuilders 视为管道、电线或连接器。在一个“端有数据”和另一个“端是事件触发”。这里的“事件触发器”是指用户请求数据。Stream builder是异步系统,只要它接收到用户输入并且可以检索数据,它就会自动运行。所以对我来说,不管你怎么说,只要你达到你想要的就更好了?最好或推荐的方法是在你完成代码之后实施,这样你就不会头疼了


推荐阅读