Sidor som data, UI via resolver

Lagra bara metadata i PageEntry. Anvand buildPage for att mappa varje sidnyckel till en faktisk widget.

Serialiserbart tillstand

PageEntry ar ren data, sa navigationstillstand kan loggas, diffas och spelas upp igen.

Enkel resolver

En switch pa page.key gor routingen explicit och latt att granska.

En enda sanningskalla

Push och pop ar listoperationer pa _pages, inte sidoeffekter.

Resolver-monster

Bygg efter sidnyckel och mutera sidlistan deklarativt.

Regel for sidtillstand

Resolver-exempel

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')]);
}
Hall metadata slimmad

Undvik att placera Widget-instanser i navigationstillstandet och hall PageEntry som ren metadata for battre underhallsbarhet.

Foregaende

Installation