void main() { Stream<String> stream1 = new Stream.fromFuture(getData(2)); Stream<String> stream2 = new Stream.fromFuture(getData(4)); Stream<String> stream3 = new Stream.fromFuture(getData(6)); final result = StreamGroup.merge([ stream1, stream2, stream3 ]); result.listen((data) { print("DataReceived: " + data); }); } Future<String> getData(int duration) async { await Future.delayed(Duration(seconds: duration)); //Mock delay return "This a test data"; }// Using rxdart package (https://pub.dev/documentation/rxdart/latest/rx/CombineLatestStream-class.html) StreamBuilder( stream: CombineLatestStream.list([ stream0, stream1, ]), builder: (context, snapshot) { final data0 = snapshot.data[0]; final data1 = snapshot.data[1]; })