CodeBlanks Logo Icon CodeBlanks

EventChannel

EventChannel ile native'den sürekli olay akışı öğrenirsin.

EventChannel nedir?

EventChannel, native taraftan Dart'a sürekli olay akışı sağlayan kanaldır. Sensör verileri, pil seviyesi değişimi gibi sürekli güncellenen veriler için kullanılır. receiveBroadcastStream metodu bir Stream döndürür ve listen ile dinlenir.

const eventChannel = EventChannel('samples.flutter.dev/sensor');
eventChannel.receiveBroadcastStream().listen((event) {
  print(event);
});

receiveBroadcastStream

receiveBroadcastStream metodu, EventChannel'ı bir akışa dönüştürür. Bu akış native taraftan gelen her olayı yayar. Dinleyici listen ile kaydedilir ve olay geldiğinde callback çağrılır. Akış cancel ile sonlandırılabilir.

final stream = eventChannel.receiveBroadcastStream();
final sub = stream.listen((event) {
  print(event);
});

Uygulama EventChannel dinle

Bir EventChannel oluştur, receiveBroadcastStream ile akışı al ve listen ile dinleyip gelen olayı yazdır. 10 milisaniye bekle.

Başlangıç kodu

main.dart
class EventChannel {
  final String name;
  EventChannel(this.name);
  Stream<dynamic> receiveBroadcastStream() => Stream.value(42);
}

void main() async {
  // EventChannel oluştur
  // akışı al ve dinle
}

Örnek çözüm

main.dart
class EventChannel {
  final String name;
  EventChannel(this.name);
  Stream<dynamic> receiveBroadcastStream() => Stream.value(42);
}

void main() async {
  const eventChannel = EventChannel('samples.flutter.dev/sensor');
  eventChannel.receiveBroadcastStream().listen((event) {
    print(event);
  });
  await Future.delayed(Duration(milliseconds: 10));
}

Beklenen çıktı

42

Soru ve cevaplar

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

1 EventChannel ne zaman tercih edilir?

  • Yalnızca hata yakalamak için
  • Veritabanı kaydetmek için
  • Tek seferlik metot çağrısı için
  • Sürekli olay akışı için Doğru cevap

Açıklama: EventChannel sürekli olay akışı için tercih edilir; tek seferlik çağrılar için MethodChannel kullanılır.

2 Akış al ve dinle

Soru
eventChannel.____().listen((event) {
  print(event);
});
Cevap
eventChannel.receiveBroadcastStream().listen((event) {
  print(event);
});

Açıklama: EventChannel'ı akışa dönüştürmek için receiveBroadcastStream metodu çağrılır; parantezlerle çağrılır ve .listen ile dinlenir.

3 EventChannel parçaları

Kavram Anlamı
EventChannel Olay akışı kanalı
receiveBroadcastStream Akış üretir
listen Olay dinler
stream Sürekli veri akışı

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