setState metodu
- Flutter kursu
- Başlangıç
- Ders 23/99
- 4 dk
setState'in build'i yeniden tetiklediğini öğrenirsin.
setState metodu
setState, State içindeki veriyi güncelledikten sonra Flutter'a build'i yeniden çağırması için sinyal veren metottur. setState'in içine yazdığın kod veriyi değiştirir; setState çıktıktan sonra Flutter State'i dirty olarak işaretler ve bir sonraki karede build yeniden çalışır.
void artir() {
setState(() {
deger = deger + 1;
});
}dirty ve rebuild
setState çağrıldığında State dirty (kirli) olarak işaretlenir. Flutter, bir sonraki karede dirty olan tüm State'lerin build metodunu yeniden çağırır. Bu işlem rebuild olarak bilinir. setState olmadan yapılan değişiklikler build'i tetiklemediği için ekrana yansımaz.
// yanlış: setState yok, ekran yenilenmez
void artirYanlis() {
deger = deger + 1;
}
// doğru: setState ile build tetiklenir
void artirDogru() {
setState(() {
deger = deger + 1;
});
}Uygulama setState bilgisini yazdır
main içinde iki satırı print ile yazdır: setState tetikler ve dirty bekler.
Başlangıç kodu
void main() {
// iki satır yazdır:
// setState tetikler
// dirty bekler
}Örnek çözüm
void main() {
print('setState tetikler');
print('dirty bekler');
}Beklenen çıktı
setState tetikler dirty bekler
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 setState ne yapar?
- Uygulamayı tamamen yeniden başlatır
- Widget'ı ağaçtan kaldırır
- Veri değişikliğini işaretler ve build'i tetikler Doğru cevap
- Yeni bir State nesnesi üretir
Açıklama: setState, veri değişikliğini işaretler ve Flutter'a build'i yeniden çağırma sinyali verir.
2 setState çağrısı
void artir() {
____(() {
deger = deger + 1;
});
}
void artir() {
setState(() {
deger = deger + 1;
});
}
Açıklama: setState, veri güncellemesini Flutter'a bildirip build'i tetikler.
3 setState kavramları
| Kavram | Anlamı |
|---|---|
setState çağrısı |
build'i yeniden tetikler |
rebuild |
build metodunun yeniden çağrılması |
dirty |
State'in yeniden çizilmeyi beklemesi |
next frame |
build'in çalıştığı an |