Flutter 如何将StreamZip与StreamBuilder一起使用?
我有两条小溪Flutter 如何将StreamZip与StreamBuilder一起使用?,flutter,dart,reactive-streams,dart-async,rxdart,Flutter,Dart,Reactive Streams,Dart Async,Rxdart,我有两条小溪 stream1 stream2 我可以给StreamBuilder一个StreamBuilder,它就可以工作了。例如: return StreamBuilder( stream: stream1, 但当我与StreamZip结合使用时,它现在会给出错误: StreamZip combinedStream() { return StreamZip(stream1, stream2]); } return StreamBuilder( stream: combined
stream1
stream2
我可以给StreamBuilder一个StreamBuilder
,它就可以工作了。例如:
return StreamBuilder(
stream: stream1,
但当我与StreamZip
结合使用时,它现在会给出错误:
StreamZip combinedStream() {
return StreamZip(stream1, stream2]);
}
return StreamBuilder(
stream: combinedStream,
如何组合
stream1
和stream2
并将其交给StreamBuilder
?您可以使用StreamGroup.merge
将两个流
合并为一个流
:
StreamBuilder(
stream: StreamGroup.merge(stream1, stream2),
Package您可以使用
流组。merge
将两个流
合并为一个流
:
StreamBuilder(
stream: StreamGroup.merge(stream1, stream2),
包流组合流(){
返回StreamZip([stream1,stream2]);
}
返回流生成器(
流:combineStream(),
生成器:(上下文,快照){
列表文档快照=[];
List querySnapshot=snapshot.data.toList();
querySnapshot.forEach((查询){
documentSnapshot.addAll(query.docs);
})
}
);
您的documentSnapshot现在包含您的组合流Stream combineStream(){
返回StreamZip([stream1,stream2]);
}
返回流生成器(
流:combineStream(),
生成器:(上下文,快照){
列表文档快照=[];
List querySnapshot=snapshot.data.toList();
querySnapshot.forEach((查询){
documentSnapshot.addAll(query.docs);
})
}
);
您的documentSnapshot现在包含您的组合流import'包:rxdart/rxdart.dart';
导入“package:tuple/tuple.dart”;
最终溪流1;
最终溪流2;
最终流=Rx.zip2(
流程1,
第2条,
(A,B)=>Tuple2(A,B),
);
StreamBuilder(
小溪:小溪,
生成器:(ctx,快照){…}
);
导入“包:rxdart/rxdart.dart”;
导入“package:tuple/tuple.dart”;
最终溪流1;
最终溪流2;
最终流=Rx.zip2(
流程1,
第2条,
(A,B)=>Tuple2(A,B),
);
StreamBuilder(
小溪:小溪,
生成器:(ctx,快照){…}
);
感谢您的回复!我尝试了这个,但它在UI中的更新不正确。它只显示一个流结果。可能是因为它在错误的时间发射?它应该从两条流发射。可能由于某种情况,另一个流没有发出信号?请共享stream1
和stream2
数据,以便我们知道您是如何创建stream1
和stream2
变量的,以及传递给merge
函数的数据类型。谢谢期待您的回复,谢谢!我尝试了这个,但它在UI中的更新不正确。它只显示一个流结果。可能是因为它在错误的时间发射?它应该从两条流发射。可能由于某种情况,另一个流没有发出信号?请共享stream1
和stream2
数据,以便我们知道您是如何创建stream1
和stream2
变量的,以及传递给merge
函数的数据类型。谢谢期待您的回复,谢谢!使用StreamZip不是更简单的方法吗?我正在combineStream中使用StreamZip将两个流压缩在一起。谢谢回复!为什么不能单独使用StreamZip?我还没有这样尝试过。我发布的代码片段是我目前如何在我的项目中使用它,它对我来说很有用。谢谢回复!使用StreamZip不是更简单的方法吗?我正在combineStream中使用StreamZip将两个流压缩在一起。谢谢回复!为什么不能单独使用StreamZip?我还没有这样尝试过。我发布的代码片段是我目前在项目中如何使用它的,它对我来说是有效的。