Il ciclo di vita del widget inizia con la chiamata alla funzione costruttore della classe StatefulWidget. Questo avviene quando il widget viene creato per la prima volta.
createState():
Dopo il costruttore, viene chiamato il metodo createState(), che è responsabile della creazione di un’istanza della classe che estende State. Questa classe contiene lo stato effettivo del widget e il suo ciclo di vita.
initState():
Una volta creato lo stato, viene chiamato initState(). Questo metodo è chiamato una sola volta quando il widget è inserito nella tree structure, e viene utilizzato per inizializzare i dati o per configurare listener e altre operazioni preliminari.
didChangeDependencies():
Questo metodo viene chiamato immediatamente dopo initState() e ogni volta che le dipendenze del widget cambiano. È utile per eseguire azioni in risposta al cambiamento delle dipendenze.
DIRTY:
Un widget diventa “dirty” (sporco) quando qualcosa che ne influenza il rendering cambia. Ad esempio, quando cambia uno stato osservato o quando si chiama setState().
build():
Il metodo build() viene chiamato ogni volta che il widget deve essere ricostruito. È qui che viene costruita la rappresentazione visiva del widget basata sullo stato attuale.
setState():
Questo metodo viene chiamato per notificare il framework che lo stato interno del widget è cambiato e che il widget deve essere ricostruito. Quando si chiama setState(), il widget viene marcato come “dirty” e build() verrà chiamato nuovamente.
didUpdateWidget():
Viene chiamato quando il widget padre cambia e si passa un nuovo widget al metodo State.build(). Questo è il punto in cui si può confrontare il nuovo widget con il vecchio e aggiornare lo stato interno se necessario.
CLEAN:
Dopo che il widget è stato ricostruito, si trova nello stato “clean” (pulito), pronto per essere visualizzato fino a quando non diventa di nuovo “dirty”.
deactivate():
Questo metodo viene chiamato quando il widget è rimosso temporaneamente dalla tree structure, ma potrebbe essere reinserito successivamente. È un’opportunità per annullare qualsiasi risorsa che potrebbe essere riattivata più tardi.
dispose():
Viene chiamato quando il widget è definitivamente rimosso dalla tree structure. Qui si dovrebbero rilasciare tutte le risorse (ad esempio controller o listener) per evitare memory leaks.