Páginas como dados, UI via resolver
Armazene apenas metadados em PageEntry. Use buildPage para mapear cada chave de página para um widget real.
Estado serializável
PageEntry é apenas dados, então o estado de navegação pode ser registrado, comparado e reproduzido.
Resolver simples
Um switch em page.key mantém o roteamento explícito e revisável.
Uma única fonte da verdade
Push e pop são operações de lista em _pages, não efeitos colaterais.
Padrão de resolver
Construa pela chave da página e muta a lista de páginas de forma declarativa.
Comando
Exemplo 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')]);
}
Mantenha os metadados enxutos
Evite colocar instâncias de Widget no estado de navegação e mantenha PageEntry como metadados puros para facilitar a manutenção.
Anterior
InstalaçãoPróximo
Resolvers