EventChannel
- Flutter kursu
- İleri seviye
- Ders 49/69
- 4 dk
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
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
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
eventChannel.____().listen((event) {
print(event);
});
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ışı |