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.

Próximo

Resolvers