Merge Firestore streams using rxDart
2,190
Solution 1
Depending on your use case, you might not need RxDart to do this.
If you just want to have two Firestore streams merged to one Dart Stream
you can use StreamZip
from the dart:async
package.
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();
}
Solution 2
You can use mergeWith to get one Stream from two seperate streams using RxDart like below,
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]);
}
Author by
yokozuna
Updated on December 06, 2022Comments
-
yokozuna over 1 year
I am trying to merge two streams from Firestore into one stream using RxDart, but it's only returning results of one stream
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])); }
-
Rémi Rousselet over 5 yearsYou may want to use
combineLatest
instead. -
Rémi Rousselet over 5 years
-
-
Arinzehills over 2 yearsplease how can i then access this data