Özet - Platform channel
- Flutter kursu
- İleri seviye
- Ders 50/69
- 4 dk
MethodChannel ve EventChannel'ı birleştirerek pil durumu yaparsın.
Pil durumu
Bir pil durumu uygulaması MethodChannel ve EventChannel'ı birleştirir. Açılışta invokeMethod('getBatteryLevel') ile anlık pil seviyesi alınır, sonra EventChannel.receiveBroadcastStream ile pil değişimleri sürekli dinlenir. Bu iki mekanizma birlikte hem ilk durumu hem de sürekli güncellemeleri sağlar.
final level = await channel.invokeMethod('getBatteryLevel');
eventChannel.receiveBroadcastStream().listen((event) {
print(event);
});Uygulama Pil durumu akışı yaz
Bir MethodChannel ve bir EventChannel oluştur. Önce invokeMethod('getBatteryLevel') ile anlık seviyeyi bekle ve yazdır. Sonra EventChannel'ın receiveBroadcastStream akışını dinle ve gelen olayı yazdır. 10 milisaniye bekle.
Başlangıç kodu
class MethodChannel {
final String name;
MethodChannel(this.name);
Future<int> invokeMethod(String method) async => 80;
}
class EventChannel {
final String name;
EventChannel(this.name);
Stream<dynamic> receiveBroadcastStream() => Stream.value(75);
}
void main() async {
// MethodChannel ve EventChannel oluştur
// anlık seviye al ve yazdır
// EventChannel akışını dinle ve yazdır
}Örnek çözüm
class MethodChannel {
final String name;
MethodChannel(this.name);
Future<int> invokeMethod(String method) async => 80;
}
class EventChannel {
final String name;
EventChannel(this.name);
Stream<dynamic> receiveBroadcastStream() => Stream.value(75);
}
void main() async {
const channel = MethodChannel('samples.flutter.dev/battery');
const eventChannel = EventChannel('samples.flutter.dev/batteryStream');
final level = await channel.invokeMethod('getBatteryLevel');
print(level);
eventChannel.receiveBroadcastStream().listen((event) {
print(event);
});
await Future.delayed(Duration(milliseconds: 10));
}Beklenen çıktı
80 75
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Pil durumu uygulamasında MethodChannel ve EventChannel birlikte nasıl kullanılır?
- İkisi aynı kanaldır
- Yalnızca MethodChannel kullanılır
- MethodChannel anlık seviyeyi, EventChannel değişimleri verir Doğru cevap
- EventChannel anlık seviyeyi verir
Açıklama: MethodChannel anlık pil seviyesini tek sefer alır; EventChannel ise pil değiştikçe sürekli olay yayar. İkisi birlikte kullanılır.
2 Anlık seviye al
final level = await channel.____('getBatteryLevel');
final level = await channel.invokeMethod('getBatteryLevel');
Açıklama: Anlık pil seviyesini almak için invokeMethod çağrılır ve 'getBatteryLevel' metot adı verilir.
3 Pil durumu parçaları
| Kavram | Anlamı |
|---|---|
MethodChannel |
Anlık seviye |
EventChannel |
Sürekli değişim |
invokeMethod |
Tek seferlik çağrı |
receiveBroadcastStream |
Akış üretir |