是否有更好的方法将小部件暴露给来自不同BLoC的两个或更多流?到目前为止,我一直在使用嵌套的StreamBuilder
来监听所需的流,就像下面粘贴的代码一样。这是一个好习惯吗?
StreamBuilder(
stream: firstBloc.stream1,
builder: (_, AsyncSnapshot snapshot1) {
return StreamBuilder(
stream: secondBloc.stream2,
builder: (_, AsyncSnapshot snapshot2) {
return CustomWidget(snapshot1.data, snapshot2.data);
}
)
}
)
使用rxdart
之类的combineLatest2
运算符比较笨拙,因为在大多数情况下,我都不希望其中一个集团被用来感知另一个集团中的流。
答案 0 :(得分:1)
您不能使用小部件来执行其他操作。那是窗口小部件系统的局限性之一:事情往往会变得很嵌套
但是有一个解决方案:Hooks,这是React的一项新功能,已通过flutter_hooks(我是维护者)移植到Flutter。
最终结果变为:
final snapshot1 = useStream(firstBloc.stream1);
final snapshot2 = useStream(secondBloc.stream2);
return CustomWidget(snapshot1.data, snapshot2.data);
这就像两个嵌套的StreamBuilder
一样,但是所有的事情都在没有嵌套的情况下完成。
答案 1 :(得分:0)
您可以将它们放在应用顶部的 MultiBlocProvider 中。