Zone
- Dart kursu
- İleri seviye
- Ders 11/83
- 5 dk
Zone ile context yönetimini öğrenirsin.
Zone nedir?
Zone, Dart'ın yürütme ortamı soyutlamasıdır. Her Future, microtask ve callback bir Zone içinde çalışır. Varsayılan Zone Zone.root'tür.
Zone.fork ile alt zone oluşturulur. Alt zone, hata yakalama, görev sarma (intercept) ve özel davranış eklemek için kullanılır.
Örnek: runZoned(() => ...) gövdeyi yeni bir zone'da çalıştırır. İçeride fırlatılan hata zone'un hata işleyicisine gider.
Zone ile hata yakalama
runZoned'a onError parametresi verilirse, gövde içinde fırlatılan yakalanmamış hatalar bu işleyiciye gider. Bu, async kodunda global hata yakalama için temel mekanizmadır.
Örnek: runZoned(() { throw 'hop'; }, onError: (e, s) => print('hata: $e'));. Gövde hata fırlatır, onError çağrılır, program çökmez.
Zone olmadan Future içindeki hata yakalanmazsa program sonlanır. Bu yüzden async kodunu zone'a sarmak iyi bir uygulamadır.
Uygulama runZoned ile gövde çalıştır
main içinde runZoned(() { print('zone içi'); }); çağrısı ekle. Sonra print('dış'); ekle.
Başlangıç kodu
void main() {
// runZoned ile gövde çalıştır; sonra 'dış' yazdır
}Örnek çözüm
void main() {
runZoned(() {
print('zone içi');
});
print('dış');
}Beklenen çıktı
zone içi dış
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yeni zone başlat
____(() { print('zone içi'); });
runZoned(() { print('zone içi'); });
Açıklama: runZoned gövdeyi yeni bir zone'da çalıştırır.
2 Zone kavramları
| Kavram | Anlamı |
|---|---|
Zone.root |
Varsayılan zone |
Zone.fork |
Alt zone |
runZoned |
Gövde çalıştırma |
onError |
Hata işleyici |
3 runZoned ne işe yarar?
- Yeni bir Isolate başlatır
- Event loop'u durdurur
- Yeni bir zone'da gövde çalıştırır Doğru cevap
- Future'ı senkron yapar
Açıklama: runZoned gövdeyi yeni bir zone'da çalıştırır.