callbackDispatcher
- Flutter kursu
- İleri seviye
- Ders 42/69
- 4 dk
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
// 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
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
bool callbackDispatcher(String ____) {
if (task == 'sync') {
return true;
}
return false;
}
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 |