有没有更好的方法将小部件公开给来自不同 BLoC 的两个或多个流?到目前为止,我一直在使用嵌套的 StreamBuilder
来处理我需要收听的尽可能多的流,就像下面粘贴的代码一样。这是一个好习惯吗?
StreamBuilder(
stream: firstBloc.stream1,
builder: (_, AsyncSnapshot snapshot1) {
return StreamBuilder(
stream: secondBloc.stream2,
builder: (_, AsyncSnapshot snapshot2) {
return CustomWidget(snapshot1.data, snapshot2.data);
}
)
}
)
使用像 combineLatest2
这样的 rxdart
运算符感觉很笨拙,因为在大多数情况下,我不希望使用某个 bloc 来了解另一个 bloc 中的流。
最佳答案
您无法使用小部件进行其他操作。这是小部件系统的限制之一:事情往往会变得非常嵌套
不过有一个解决方案:Hooks,一个来自 React 的新功能,通过 flutter_hooks 移植到 Flutter (我是维护者)。
最终结果变成了这样:
final snapshot1 = useStream(firstBloc.stream1);
final snapshot2 = useStream(secondBloc.stream2);
return CustomWidget(snapshot1.data, snapshot2.data);
这与两个嵌套的 StreamBuilder
完全一样,但无论是否嵌套,一切都是在同一个内完成的。
关于architecture - flutter BLoC : Is using nested StreamBuilders a bad practice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840870/
相关文章:
dart - 如何根据背景图像更改文本颜色 - Flutter
google-maps - 自定义 Flutter Google Map 中的中心位置按钮
flutter - 在 Android Studio 中运行和热重载 flutter 的问题(坏状态
flutter - 如何在 Flutter 中向 TextFormField 添加阴影
android - 在 Flutter 的垂直列表中添加动态高度水平 ListView
testing - 如何在 Flutter 中测试私有(private)函数/方法?
flutter - 了解 Flutter didChangeDependencies 机制