Stránky jako data, UI přes resolver

Do PageEntry ukládejte jen metadata. Pomocí buildPage namapujte každý klíč stránky na konkrétní widget.

Serializovatelný stav

PageEntry je obyčejná data, takže stav navigace lze logovat, porovnávat a přehrávat.

Jednoduchý resolver

switch nad page.key udržuje routování explicitní a snadno kontrolovatelné.

Jediný zdroj pravdy

Push a pop jsou operace se seznamem _pages, ne vedlejší efekty.

Vzor resolveru

Sestavujte podle klíče stránky a seznam stránek měňte deklarativně.

Pravidlo stavu stránky

Příklad resolveru

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')]);
}
Nechte metadata štíhlá

Nevkládejte instance Widgetu do stavu navigace do stavu navigace a PageEntry ponechte jako čistá metadata kvůli snazší údržbě.

Předchozí

Instalace

Další

Resolvery