Code
dart
// Future: single async value
Future<int> fetchCount() async {
await Future.delayed(Duration(milliseconds: 500));
return 42;
}
// Stream: multiple async values
Stream<int> countDown(int from) async* {
for (var i = from; i >= 0; i--) {
await Future.delayed(Duration(seconds: 1));
yield i;
}
}
void main() async {
// Future
final count = await fetchCount();
print('Count: $count');
// Stream: await for
await for (final n in countDown(3)) {
print(n); // 3, 2, 1, 0
}
// Stream: listen
final sub = countDown(5).listen(
(n) => print('Tick: $n'),
onDone: () => print('Done'),
onError: (e) => print('Error: $e'),
);
// Cancel subscription
await Future.delayed(Duration(seconds: 2));
await sub.cancel();
// Stream transformations
final doubled = countDown(3).map((n) => n * 2);
await for (final n in doubled) print(n);
}