CodeBlanks Logo Icon CodeBlanks

Özet - Stream'ler

listen, map ve StreamController'ı birleştirerek bir olay kaydedici yazarsın.

Özet - Stream'ler

Bu grupta Stream'lerin temellerini öğrendik: Stream olay dizisini temsil eder; listen ile abone olunur; map/where ile dönüştürülür; asyncExpand ile açılır; StreamController ile elle oluşturulur.

Bu araçlar birlikte Dart'ta olay tabanlı programlamanın temelini oluşturur. Kullanıcı girdisi, sensör verisi, ağ paketleri gibi sürekli akan verilerde kullanılırlar.

Şimdi iki aracı bir arada kullanan bir alıştırma yapalım: StreamController ile olay üret, map ile dönüştür ve yazdır.

Uygulama Controller ile üret, map ile dönüştür

import 'dart:async' zaten ekli. void main() async zaten yazılı. StreamController<int>() oluştur. controller.add(10) ve controller.add(20) ile iki olay gönder. controller.close() ile kapat. controller.stream.map((n) => n * 2) ile olayları ikiye katla. await for ile dinle ve print ile yazdır.

Başlangıç kodu

main.dart
import 'dart:async';

void main() async {
  // StreamController<int> oluştur, iki değer ekle, close ile kapat
  // .map ile ikiye katla, await for ile yazdır
}

Örnek çözüm

main.dart
import 'dart:async';

void main() async {
  var controller = StreamController<int>();
  controller.add(10);
  controller.add(20);
  controller.close();
  var doubled = controller.stream.map((n) => n * 2);
  await for (var n in doubled) {
    print(n);
  }
}

Beklenen çıktı

20
40

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Stream kavramlarını eşleştir

Kavram Anlamı
Stream Olay dizisi
listen Abone olma
map/where Dönüştürme
StreamController Elle oluşturma

2 Hangi sınıf kendi Stream'ini elle oluşturmanı sağlar?

  • StreamController Doğru cevap
  • Completer
  • Future
  • Iterable

Açıklama: StreamController ile kendi Stream'ini elle oluşturursun.

Orta seviye bölümündeki tüm dersler