CodeBlanks Logo Icon CodeBlanks

Broadcast stream

Broadcast stream ile çoklu dinleyici öğrenirsin.

Broadcast stream

Standart bir Stream tek dinleyicilidir: ikinci bir listen hataya yol açar. Broadcast stream ise birden çok dinleyiciye izin verir.

Bir stream'u broadcast yapmak için .asBroadcastStream() çağrılır ya da StreamController.broadcast() ile açılır. Her dinleyici aynı olayları alır.

Kullanım: bir olay kaynağını (ör. zamanlayıcı, WebSocket) uygulamanın birden çok yerine dağıtmak. Ancak broadcast stream'lerde state'li operatörler (buffer, debounce) beklenenden farklı davranabilir.

asBroadcastStream

stream.asBroadcastStream(), tek dinleyicili stream'u broadcast'a çevirir. Dönen stream'a istediğin kadar listen yapabilirsin.

Örnek: var b = Stream.fromIterable([1, 2, 3]).asBroadcastStream();. b.listen(print) ve b.listen(print) her ikisi de 1, 2, 3 alır.

Dikkat: asBroadcastStream çağrıldıktan sonra olaylar dinleyicilere dağıtılır; geciken dinleyici öncekileri kaçırır.

Uygulama Broadcast stream'i dinle

main'i async yap. var s = Stream.fromIterable([1, 2, 3]).asBroadcastStream(); ekle. await s.forEach(print); ekle.

Başlangıç kodu

main.dart
void main() {
  // async yap; fromIterable([1,2,3]) stream'ını broadcast'a çevir; forEach ile yazdır
}

Örnek çözüm

main.dart
void main() async {
  var s = Stream.fromIterable([1, 2, 3]).asBroadcastStream();
  await s.forEach(print);
}

Beklenen çıktı

1
2
3

Soru ve cevaplar

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

1 Hangisi broadcast stream özelliğidir?

  • Birden çok dinleyiciye izin verir Doğru cevap
  • İkinci dinleyici hataya yol açar
  • Yalnızca tek dinleyici alır
  • Yalnızca Future ile çalışır

Açıklama: broadcast stream birden çok dinleyiciye izin verir.

2 Broadcast'a çevir

Soru
var b = s.____();
Cevap
var b = s.asBroadcastStream();

Açıklama: asBroadcastStream stream'u broadcast'a çevirir.

3 Stream türlerini eşleştir

Kavram Anlamı
Single-subscription Tek dinleyici
Broadcast Çok dinleyici
asBroadcastStream Dönüştürme
StreamController.broadcast Çok dinleyicili kaynak

İleri seviye bölümündeki tüm dersler