setState və StatefulWidget lifecycle
setState sehr deyil — o, sadəcə iki şey edir: callback-i sinxron işlədir və elementi "dirty" kimi işarələyir. Rebuild isə növbəti frame-də baş verir.
Bundan iki nəticə çıxır:
setStateiçindəki kod dərhal icra olunur, ona görə oradaawaitetmək mənasızdır — dəyişikliyi əvvəl et, sonrasetStateçağırsetState-siz sahəni dəyişsən dəyər dəyişir, amma UI yenilənmir; ekran nə vaxtsa başqa səbəbdən rebuild olanda dəyişiklik "birdən" görünür
| Metod | Nə vaxt çağırılır | Nə üçün istifadə olunur |
|---|---|---|
| `initState` | State yaradılanda bir dəfə | Controller yaratmaq, subscription açmaq, ilk data yükləmək |
| `didChangeDependencies` | `initState`-dən sonra və asılı olduğu InheritedWidget dəyişəndə | `Theme.of`/`MediaQuery.of`-dan asılı işlər |
| `didUpdateWidget` | Valideyn eyni tipdə yeni widget verəndə | Köhnə və yeni `widget` parametrlərini müqayisə edib reaksiya vermək |
| `dispose` | State ağacdan həmişəlik çıxarılanda | Controller bağlamaq, subscription ləğv etmək |
Interview ipucu. initState-də context-dən istifadə etmək klassik tələdir: Theme.of(context) və ya MediaQuery.of(context) orada hələ etibarlı deyil — bunun üçün didChangeDependencies var. Digər tez-tez soruşulan nüans: initState-də async iş başlatmaq olar, amma initState-in özünü async etmək olmaz; işi ayrıca metoda çıxarıb çağırmaq lazımdır.
📚 Mənbələr və sənədlər
- State classrəsmiapi.flutter.dev
Lifecycle metodlarının çağırılma sırası sinif sənədində addım-addım verilib.
- StatefulWidget classrəsmiapi.flutter.dev
- State management-ə girişrəsmidocs.flutter.dev