← Kembali ke kursus
Pelajaran kursus · Dart
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`.