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
AsennusSeuraava
Resolverit