Pagina's als data, UI via resolver

Sla alleen metadata op in PageEntry. Gebruik buildPage om elke paginasleutel te koppelen aan een daadwerkelijke widget.

Serializeerbare state

PageEntry is gewone data, dus de navigatiestate kan worden gelogd, vergeleken en opnieuw worden afgespeeld.

Eenvoudige resolver

Een switch op page.key houdt routing expliciet en controleerbaar.

Eén bron van waarheid

Push en pop zijn lijstbewerkingen op _pages, geen bijwerkingen.

Resolver-patroon

Bouw op basis van paginasleutel en muteer de paginalijst declaratief.

Regel voor paginastate

Resolver-voorbeeld

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')]);
}
Houd metadata slank

Plaats geen Widget-instanties in de navigatiestate en houd PageEntry als pure metadata voor onderhoudbaarheid.