【发布时间】:2021-03-18 12:06:44
【问题描述】:
用例 1:
假设我有一个显示 3 个不同列表的屏幕,List-1、List-2、List-3(显示为水平滚动列表)。
这 3 个列表是从 3 个不同的网络请求中获取的。我正在使用 BLOC 模式将所有网络请求包含在内部和 BLOC 中,然后使用流将结果反馈回页面。
现在,这是更好的方法:
- 使用 Single StreamBuilder 包装页面的整个状态(所有 3 个列表)并在 Bloc 中加载所有 3 个网络请求并通过流发送更新的状态。
- 为 3 个列表使用 3 个 StreamBuilder,监听 BLOC 中的 3 个 Stream。因此,当每个网络请求完成时,只会触发和构建相应的列表 Stream。
用例 2:
带有组件的登录页面:
- 用户名和密码文本字段,其中用户名显示使用 Stack 的建议列表
- 一个提交按钮,其中支持 CircularProgressIndicator。
使用 1 个 StreamBuilder 包装整个状态或使用 2 个 StreamBuilders 包装 1 个文本字段和 1 个 StreamBuilder 包装提交按钮。因此,如果 Loading 状态发生变化,只会重建 Button。
在一个屏幕中拥有多个 StreamBuilder 是否会导致任何权衡或性能问题?
更新:添加了另一个用例。
【问题讨论】:
标签: flutter dart bloc clean-architecture rxdart