import 'dart:async'; // Consume a stream. Future sumStream(Stream stream) async { var sum = 0; await for (var value in stream) { sum += value; } return sum; } // Create a stream. Stream countStream(int to) async* { for (int i = 1; i <= to; i++) { // add delay to generation of each value // await Future.delayed(Duration(milliseconds: 500)); yield i; } } main() async { var stream = countStream(10); var sum = await sumStream(stream); print(sum); // 55 }