Pages et r?solveur
Store uniquement metadata dans PageEntry. Use buildPage ? map each page key ? an actual widget.
État sérialisable
PageEntry is plain data, so navigation state can be logged, diffed, et replayed.
Résolveur simple
A switch on page.key keeps routing explicit et reviewable.
One source de truth
Push et pop are list operations on _pages, not side effects.
Modèle de résolveur
Build by page key et mutate the page list declaratively.
Commande
Resolver exemple
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')]);
}
Gardez les métadonnées légères
Évitez de placer Les instances de Widget dans l'état de navigation et keep PageEntry as pure metadata pour maintainability.
Previous
InstallationNext
Overlays