Pages et résolveur
Stockez uniquement les métadonnées dans PageEntry. Utilisez buildPage pour associer chaque clé de page à un widget réel.
État sérialisable
PageEntry est une donnée brute, de sorte que l'état de navigation peut être enregistré, comparé et rejoué.
Résolveur simple
Un switch sur page.key maintient le routage explicite et vérifiable.
Source unique de vérité
Push et pop sont des opérations de liste sur _pages, pas des effets secondaires.
Modèle de résolveur
Construisez par clé de page et mutez la liste des pages de manière déclarative.
Commande
Exemple de résolveur
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 conservez PageEntry en tant que métadonnées pures pour la maintenabilité.
Précédent
InstallationSuivant
Superpositions