Pagini ca date, UI prin resolver
Stochează doar metadate în PageEntry. Folosește buildPage pentru a mapa fiecare cheie de pagină la un widget real.
Stare serializabilă
PageEntry este doar date, deci starea de navigare poate fi logată, comparată și redată.
Resolver simplu
Un switch pe page.key menține rutarea explicită și ușor de revizuit.
O singură sursă a adevărului
Push și pop sunt operații pe lista _pages, nu efecte secundare.
Model de resolver
Construiește după cheia paginii și modifică lista de pagini declarativ.
Comandă
Exemplu de resolver
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')]);
}
Păstrează metadatele ușoare
Evită să plasezi instanțe Widget în starea de navigare și păstrează PageEntry ca metadate pure pentru mentenabilitate.