Pelajaran 31
Stream
Stream, async*, yield, await for, listen.
Pahami konsepnya
Stream adalah urutan nilai async — seperti Future tapi banyak nilai dari waktu ke waktu. Generator: Stream<int> hitung(int n) async* { for (var i = 1; i <= n; i++) yield i; }. Konsumsi: await for (var x in stream) atau stream.listen((x) { ... }).
Coba contoh kode
Stream<int> hitung(int n) async* {
for (var i = 1; i <= n; i++) {
await Future.delayed(Duration(milliseconds: 10));
yield i;
}
}
Future<void> main() async {
await for (var x in hitung(5)) {
print(x);
}
}async* + yield menghasilkan nilai satu per satu. await for menyusuri stream sampai selesai — tiap yield memicu satu iterasi.
Latihan singkat
Uji: stream hitung(3) → jumlahkan — harus `6`.