Flutter:将Observable1.mergeWith([observable2])

时间:2018-07-16 19:13:35

标签: dart flutter reactivex

我想合并两个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>> 

2 个答案:

答案 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页面上进行了更新,请注意,这是我看到的一个常见问题很多人抱怨在线。

https://github.com/dart-lang/async/issues/70