Sider som data, UI via resolver

Gem kun metadata i PageEntry. Brug buildPage til at mappe hver side-key til en faktisk widget.

Serialiserbar state

PageEntry er rene data, så navigationstilstanden kan logges, diffes og afspilles igen.

Enkel resolver

Et switch på page.key holder routing eksplicit og let at reviewe.

Én kilde til sandheden

Push og pop er listeoperationer på _pages, ikke sideeffekter.

Resolver-mønster

Byg efter side-key og mutér sidelisten deklarativt.

Regel for side-state

Resolver-eksempel

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')]);
}
Hold metadata lette

Undgå at placere Widget-instanser i navigationstilstanden og hold PageEntry som ren metadata for bedre vedligeholdelse.