Flutter : stream two Streams into a single screen?
Well in my case, I prefer merging more than one stream into one, if they are of the same type. So you can use:
import 'package:async/async.dart' show StreamGroup;
...
StreamGroup.merge([stream1,stream2]);
You can nest StreamBuilder
if needed. Nothing prevents you from doing the following:
StreamBuilder(
stream: stream1,
builder: (context, snapshot1) {
return StreamBuilder(
stream: stream2,
builder: (context, snapshot2) {
// do some stuff with both streams here
},
);
},
)
Another solution if this makes sense for you is: Streams are designed to be mergeable/transformed. You could make a third stream that is a merge of the two later streams.
Ideally for complex stream operations you'll want to use rxdart as it provides a few useful transformer.
Using rxdart, the fusion of two Observable
(which are subclass of Stream
) would be the following:
Observable<bool> stream1;
Observable<String> stream2;
final fusion = stream1.withLatestFrom(stream2, (foo, bar) {
return MyClass(foo: foo, bar: bar);
});
Observable.combineLatest2(
aStream,
bStream,
(a, b, c) =>
a != '' && b != '');
combineLatestN returns a combined stream