CodeBlanks Logo Icon CodeBlanks

callbackDispatcher

callbackDispatcher ile arka plan callback tanımlamayı öğrenirsin.

callbackDispatcher nedir?

callbackDispatcher, arka plan görevi çalıştığında çağrılan üst düzey (top-level) fonksiyondur. Ayrı bir isolate'te çalıştığı için uygulamanın ana state'ine erişemez. Görev kimliği task parametresiyle gelir ve uygun iş yapılır.

bool callbackDispatcher(String task) {
  if (task == 'sync') {
    // senkron yap
  }
  return true;
}

task parametresi

callbackDispatcher, hangi görevin çalıştığını belirten bir task kimliği alır. Bu kimlik, görev zamanlanırken verilen isimle eşleşir. Fonksiyon içinde if veya switch ile uygun iş yapılır.

bool callbackDispatcher(String task) {
  switch (task) {
    case 'sync':
      break;
  }
  return true;
}

Uygulama callbackDispatcher yaz

Üst düzey callbackDispatcher fonksiyonu yaz: String task parametresi alsın, 'sync' kimliği için true, aksi halde false döndürsün. main içinde 'sync' kimliğiyle çağır ve sonucu yazdır.

Başlangıç kodu

main.dart
// callbackDispatcher fonksiyonunu yaz
// String task parametresi alsın
// 'sync' kimliği için true döndürsün

void main() {
  // 'sync' kimliğiyle çağır, sonucu yazdır
}

Örnek çözüm

main.dart
bool callbackDispatcher(String task) {
  if (task == 'sync') {
    return true;
  }
  return false;
}

void main() {
  print(callbackDispatcher('sync'));
}

Beklenen çıktı

true

Soru ve cevaplar

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

1 callbackDispatcher neden üst düzey (top-level) bir fonksiyon olmalıdır?

  • Çünkü main içinde tanımlanamaz
  • Çünkü yalnızca üst düzey fonksiyonlar async olabilir
  • Çünkü ayrı bir isolate'te çalışır ve sınıf state'ine erişemez Doğru cevap
  • Çünkü derleyici yalnızca üst düzey fonksiyonları derler

Açıklama: callbackDispatcher ayrı bir isolate'te çalıştığı için uygulama state'ine erişemez; bu yüzden üst düzey ve bağımsız olmalıdır.

2 task kimliğini kontrol et

Soru
bool callbackDispatcher(String ____) {
  if (task == 'sync') {
    return true;
  }
  return false;
}
Cevap
bool callbackDispatcher(String task) {
  if (task == 'sync') {
    return true;
  }
  return false;
}

Açıklama: callbackDispatcher fonksiyonunun parametresi task adını alır; bu, görevin kimliğidir.

3 callbackDispatcher parçaları

Kavram Anlamı
callbackDispatcher Arka plan callback
task Görev kimliği
isolate Ayrı yürütme ortamı
top-level Üst düzey fonksiyon

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