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?我还没有这样尝试过。我发布的代码片段是我目前在项目中如何使用它的,它对我来说是有效的。