CodeBlanks Logo Icon CodeBlanks

Özet - Platform channel

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

main.dart
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

main.dart
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

Soru
final level = await channel.____('getBatteryLevel');
Cevap
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

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