Quando si inizia con Flutter il primo strumento che si impara per aggiornare l'interfaccia è setState. Funziona, ma ha un limite: ricostruisce l'intero widget che lo contiene, anche le parti che non sono cambiate.
Prima di installare Provider, Riverpod o BLoC, vale la pena conoscere una coppia di classi che Flutter mette a disposizione out of the box:
ValueNotifier<T>: un contenitore di un valore che avvisa i suoi ascoltatori quando il valore cambia;ValueListenableBuilder<T>: un widget che ascolta unValueNotifiere ricostruisce solo il suo sottoalbero.
Sono leggerissimi, non richiedono dipendenze esterne e sono perfetti per lo stato locale di una schermata: un contatore, un interruttore, una lista di elementi, lo stato di caricamento di un pulsante.
In questo tutorial costruiremo passo passo una piccola app "Lista della spesa" che usa solo ValueNotifier, imparando anche gli errori classici (dimenticare dispose, mutare una lista senza notificare) e come ottimizzare i rebuild.
Prerequisiti: Flutter installato, conoscenza di base di
StatefulWidgetesetState.