Stránky ako dáta, UI cez resolver

Do PageEntry ukladajte len metadáta. Použite buildPage na mapovanie každého kľúča stránky na skutočný widget.

Serializovateľný stav

PageEntry je obyčajný údaj, takže stav navigácie možno logovať, porovnávať a znovu prehrávať.

Jednoduchý resolver

Switch nad page.key drží routovanie explicitné a ľahko kontrolovateľné.

Jeden zdroj pravdy

Push a pop sú operácie nad zoznamom _pages, nie vedľajšie efekty.

Vzor resolvera

Zostavujte podľa kľúča stránky a deklaratívne upravujte zoznam stránok.

Pravidlo stavu stránok

Príklad resolvera

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')]);
}
Udržujte metadáta úsporné

Vyhnite sa vkladaniu inštancií Widget do stavu navigácie a udržujte PageEntry ako čisté metadáta kvôli udržiavateľnosti.

Predchádzajúce

Inštalácia