Hari 12: Stream & Reactive Programming
60 min
Last updated 09 Apr 2026
Apa itu Stream?
Stream adalah sequence of asynchronous events — seperti Future tapi bisa menghasilkan banyak nilai, bukan hanya satu. Cocok untuk real-time data: sensor, WebSocket, live updates.
Stream hitungMundur(int dari) async* {
for (int i = dari; i >= 0; i--) {
await Future.delayed(Duration(milliseconds: 300));
yield i;
}
}
void main() async {
print("Hitung mundur:");
await for (int n in hitungMundur(5)) {
print(n);
}
print("GO!");
}
StreamController
import "dart:async";
void main() async {
StreamController controller = StreamController();
// Listen sebelum mengirim data
controller.stream.listen(
(data) => print("Diterima: $data"),
onError: (e) => print("Error: $e"),
onDone: () => print("Stream selesai"),
);
controller.add("Pesan 1");
controller.add("Pesan 2");
controller.add("Pesan 3");
await Future.delayed(Duration(milliseconds: 100));
controller.close();
}
Stream Transformers
Stream angka() async* {
for (int i = 1; i <= 10; i++) {
yield i;
}
}
void main() async {
await angka()
.where((n) => n % 2 == 0) // filter genap
.map((n) => n * n) // kuadratkan
.listen((n) => print(n)); // 4, 16, 36, 64, 100
}
💡
Notice: async* dan yield digunakan untuk membuat generator stream. await for untuk mengkonsumsi stream.
Assignment
Buat Stream generator deret Fibonacci dengan async* dan yield.
Expected output:
Deret Fibonacci:
0
1
1
2
3
5
8
13
Dart
main.dart
Solution
Output