Su Android (e in misura minore su iOS) il sistema operativo può uccidere il processo della tua app quando resta in background e la memoria scarseggia. Quando l'utente torna nell'app, Android ricrea l'Activity: l'utente si aspetta di ritrovare la stessa schermata, gli stessi campi compilati e la stessa posizione di scroll, ma un'app Flutter non preparata riparte dalla home con tutto lo stato azzerato.
Flutter risolve questo problema con il framework di state restoration: un albero di RestorationBucket serializzati che il framework consegna al motore, il quale li passa alla piattaforma. Al riavvio i dati tornano indietro e i widget possono ricostruire il proprio stato prima del primo frame.
In questo tutorial avanzato vedremo come:
- attivare la restoration con
restorationScopeIde verificarla realmente sul dispositivo; - registrare proprietà con
RestorationMixine leRestorablePropertydi serie; - rendere ripristinabili rotte e dialoghi con
Navigator.restorablePusheRestorableRouteFuture; - scrivere una
RestorableValuecustom per modelli di dominio complessi; - coprire tutto con widget test usando
tester.restartAndRestore().
Prerequisiti: buona conoscenza di
StatefulWidget,Navigator2.0/1.0 e dei widget test. Il codice è compatibile con Flutter 3.x.