Sivut datana, UI resolverin kautta

Tallenna PageEntryyn vain metatiedot. Käytä buildPagea yhdistämään jokainen sivuavain oikeaan widgetiin.

Sarjoitettavissa oleva tila

PageEntry on pelkkää dataa, joten navigaatiotilan voi lokittaa, diffata ja toistaa.

Yksinkertainen resolver

page.key:n switch pitää reitityksen eksplisiittisenä ja tarkistettavana.

Yksi totuuden lähde

Push ja pop ovat _pages-listan operaatioita, eivät sivuvaikutuksia.

Resolver-malli

Rakenna sivuavaimen perusteella ja muuta sivulistaa deklaratiivisesti.

Komento

Resolver-esimerkki

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')]);
}
Pidä metadata kevyenä

Vältä sijoittamasta Widget-instanssit navigaatiotilaan ja pidä PageEntry puhtaana metadatana ylläpidettävyyden vuoksi.

Edellinen

Asennus

Seuraava

Resolverit