2

我正在尝试使用 RxDart 将 Firestore 中的两个流合并为一个流,但它只返回一个流的结果

Stream getData() {
    Stream stream1 = Firestore.instance.collection('test').where('type', isEqualTo: 'type1').snapshots();
    Stream stream2 = Firestore.instance.collection('test').where('type', isEqualTo: 'type2').snapshots();
    return Observable.merge(([stream2, stream1]));
}
4

2 回答 2

8

根据您的用例,您可能不需要 RxDart 来执行此操作。如果您只想将两个 Firestore 流合并到一个 Dart Stream,您可以StreamZipdart:async包中使用。

import 'dart:async';     

Stream<List<QuerySnapshot>> getData() {
  Stream stream1 = Firestore.instance.collection('test').where('type', isEqualTo: 'type1').snapshots();
  Stream stream2 = Firestore.instance.collection('test').where('type', isEqualTo: 'type2').snapshots();
  return StreamZip([stream1, stream2]).asBroadcastStream();
}
于 2018-09-09T07:11:23.580 回答
4

您可以使用 mergeWith 从两个使用 RxDart 的单独流中获取一个流,如下所示,

 Stream getData() {
    Stream stream1 = Firestore.instance.collection('test').where('type', isEqualTo: 'type1').snapshots();
    Stream stream2 = Firestore.instance.collection('test').where('type', isEqualTo: 'type2').snapshots();
    return stream1.mergeWith([stream2]);
  }
于 2020-01-13T10:31:32.023 回答