StreamController
- Dart kursu
- Orta seviye
- Ders 68/116
- 5 dk
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
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
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
var controller = ____<int>();
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?
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 |