Sider som data, UI via resolver
Lagre bare metadata i PageEntry. Bruk buildPage til å mappe hver sidenøkkel til en faktisk widget.
Serialiserbar tilstand
PageEntry er rene data, så navigasjonstilstand kan logges, diffes og spilles av på nytt.
Enkel resolver
En switch på page.key holder ruting eksplisitt og lett å gå gjennom i kodegjennomgang.
Én kilde til sannhet
Push og pop er listeoperasjoner på _pages, ikke sideeffekter.
Resolver-mønster
Bygg etter sidenøkkel og muter sidelisten deklarativt.
Regel for sidetilstand
Resolver-eksempel
Widget _buildPage(BuildContext context, PageEntry page) {
switch (page.key) {
case 'home':
return HomePage(onGoDetail: _goDetail);
case 'detail':
return const DetailPage();
default:
return const SizedBox.shrink();
}
}
void _goDetail() {
setState(() => _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')]);
}
Hold metadata slanke
Unngå å legge Widget-instansene inn i navigasjonstilstanden og behold PageEntry som rene metadata for bedre vedlikeholdbarhet.
Forrige
InstallasjonNeste
Overlays