Sidor som data, UI via resolver
Lagra bara metadata i PageEntry. Anvand buildPage for att mappa varje sidnyckel till en faktisk widget.
Serialiserbart tillstand
PageEntry ar ren data, sa navigationstillstand kan loggas, diffas och spelas upp igen.
Enkel resolver
En switch pa page.key gor routingen explicit och latt att granska.
En enda sanningskalla
Push och pop ar listoperationer pa _pages, inte sidoeffekter.
Resolver-monster
Bygg efter sidnyckel och mutera sidlistan deklarativt.
Regel for sidtillstand
Resolver-exempel
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')]);
}
Hall metadata slimmad
Undvik att placera Widget-instanser i navigationstillstandet och hall PageEntry som ren metadata for battre underhallsbarhet.
Foregaende
InstallationNasta
Overlays