CodeBlanks Logo Icon CodeBlanks

StreamController

StreamController ile Stream oluşturmayı öğrenirsin.

StreamController

StreamController kendi Stream'ini elle oluşturmanı sağlar. Olayları add metoduyla gönderirsin; akışı close ile kapatırsın. Dinleyiciler controller.stream üzerinden abone olur.

Örnek: var controller = StreamController<int>();. controller.add(10); ile bir olay gönderirsin. controller.close(); ile akışı kapatırsın. await for (var n in controller.stream) ile dinlersin.

StreamController dart:async kütüphanesinde bulunur; import 'dart:async'; gerekir. Gerçek uygulamalarda kullanıcı girdisi, zamanlayıcı gibi kaynaklardan Stream üretmek için kullanılır.

Controller akışı

StreamController kullanmanın akışı şöyledir: önce StreamController<T>() ile oluştur. add ile olaylar gönder. close ile akışı kapat. Son olarak controller.stream üzerinden await for ile dinle.

Örnek: var controller = StreamController<int>(); controller.add(10); controller.add(20); controller.close(); await for (var n in controller.stream) { print(n); }. Çıktı: 10, 20.

Controller olayları belleğe alır; dinleyici abone olduğunda sırayla gönderir. close çağrıldıktan sonra akış biter ve await for çıkar.

Uygulama StreamController ile akış oluştur

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. await for (var n in controller.stream) 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
  // await for ile akıştan elemanları 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();
  await for (var n in controller.stream) {
    print(n);
  }
}

Beklenen çıktı

10
20

Soru ve cevaplar

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

1 StreamController oluşturma

Soru
var controller = ____<int>();
Cevap
var controller = StreamController<int>();

Açıklama: StreamController<int>() ile elle akış oluşturulur.

2 StreamController'a olay eklemek için hangi metot çağrılır?

main.dart
var c = StreamController<int>();
c.???(10);
  • emit
  • push
  • send
  • add Doğru cevap

Açıklama: add metodu controller'a olay gönderir.

3 StreamController parçalarını eşleştir

Kavram Anlamı
StreamController<int>() Oluşturma
controller.add(10) Olay gönderme
controller.close() Akışı kapatma
controller.stream Akış erişimi

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