我想合并两个Observable或Streams,以用作Stream Builder的流输入,以从这些Streamed对象中构建出Listview。
我尝试了
observable1.mergeWith([observable2])
这,但lsit视图仅显示可观察到的2。
如果我链接另一个像observable1.mergeWith([observable2]).mergewith([observable3]) Or observable1.mergeWith([observable2,observable3])
这只显示了我可观察的3。
我尝试了concatwith,Combinelatest2,但是没有任何效果。任何解决方案。
我也尝试过
Observable.combineLatest2(
Observable1, Observable2, (a, b) {
print("lengtsdfsdf"+a.length);
print("lengtsdfsdf"+b.length);
return List.from(a)..addAll(b);
}); // Here the Obsevables are of type Observable<List<obj>>
答案 0 :(得分:1)
我认为这里的问题是,当Firebase的响应到达时,每个流都会发送一个事件,其中数据是条目的集合。
一个事件示例是StreamA
的结果是['a', 'b', 'c']
和
StreamB
中的一个事件是['e', 'f', 'g']
。
您似乎期望Observable.merge()
是
['a', 'b', 'c', 'e', 'f', 'g'],
但实际上它会发出2个事件。
首先
['a', 'b', 'c']
然后
['e', 'f', 'g'].
Flutter/StreamBuilder
首先导致呈现第一个事件的数据,然后,当第二个事件到达窗口小部件时,将使用第二个事件的数据对其进行重建。
通过Observable.scan
运算符,您可以将多个事件中的数据合并为一个事件。
答案 1 :(得分:0)
我遇到了同样的问题,但是我仍然没有找到解决方案,我在github上跟踪了该问题,因此,修复了该错误后,它应该在github页面上进行了更新,请注意,这是我看到的一个常见问题很多人抱怨在线。