Páginas y resolvedor

Guarda solo metadatos en PageEntry. Usa buildPage para mapear cada clave de página a un widget real.

Estado serializable

PageEntry son datos puros, así que el estado de navegación se puede registrar, comparar y reproducir.

Resolutor simple

Un switch sobre page.key mantiene el enrutado explícito y revisable.

Una sola fuente de verdad

Push y pop son operaciones de lista sobre _pages, no efectos secundarios.

Patrón del resolver

Construye por clave de página y muta la lista de páginas de forma declarativa.

Regla del estado de la página

Ejemplo del 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')]);
}
Mantén ligeros los metadatos

Evita colocar instancias de Widget en el estado de navegación y conserva PageEntry como metadatos puros para facilitar el mantenimiento.