CodeBlanks Logo Icon CodeBlanks

StreamController

StreamController ile kendi Stream'ini oluşturmayı öğrenirsin.

StreamController

StreamController, kendi Stream'ini oluşturmanı sağlar. sink.add ile akışa değer gönderir, stream özelliği ile de dinleyebilirsin.

final controller = StreamController<int>();
controller.sink.add(1);
controller.stream.listen(print);

Bu, programatik olarak veri üretmenin yoludur.

sink ve stream

controller.sink.add(deger) akışa yeni bir değer gönderir. controller.stream ise bu değerleri dinlemek için kullanılan Stream'dir.

controller.sink.add('merhaba');
controller.stream.listen((deger) {
  print(deger);
});

Akıştan gelen değerler dinleyicilere iletilir.

Uygulama StreamController ile veri gönder

VeriYoneticisi sınıfında StreamController<String> tut. veriGonder metodu controller.sink.add(deger) çağırsın. stream getter'ı controller.stream döndürsün. main'de yönetici oluştur, 'merhaba' gönder ve print('yönetici hazır') çağır.

Başlangıç kodu

main.dart
import 'dart:async';

class VeriYoneticisi {
  // kontrolcü tanımla
  // veriGonder metodu ekle
  // stream getter ekle
}

void main() {
  final yonetici = VeriYoneticisi();
  yonetici.veriGonder('merhaba');
  print('yönetici hazır');
}

Örnek çözüm

main.dart
import 'dart:async';

class VeriYoneticisi {
  final controller = StreamController<String>();

  void veriGonder(String deger) {
    controller.sink.add(deger);
  }

  Stream<String> get stream => controller.stream;
}

void main() {
  final yonetici = VeriYoneticisi();
  yonetici.veriGonder('merhaba');
  print('yönetici hazır');
}

Beklenen çıktı

yönetici hazır

Soru ve cevaplar

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

1 StreamController ile ne yapılır?

  • Kendi Stream'ini oluşturursun Doğru cevap
  • Widget çizilir
  • Stream dinleyici eklenir
  • Future üretir

Açıklama: StreamController ile kendi Stream'ini oluşturursun; sink.add ile değer gönderir, stream ile dinlersin.

2 sink.add ile değer gönder

Soru
controller.sink.____('merhaba');
Cevap
controller.sink.add('merhaba');

Açıklama: controller.sink.add ile akışa yeni bir değer gönderilir; dinleyenler bu değeri alır.

3 StreamController parçaları

Kavram Anlamı
StreamController Kendi Stream'ini oluşturan sınıf
sink Akışa veri ekleme kanalı
stream Dinlenebilen akış
add sink üzerinden değer gönderme metodu

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