Stranice kao podaci, UI preko resolvera
Pohranite samo metapodatke u PageEntry. Koristite buildPage za mapiranje svakog ključa stranice na stvarni widget.
Serijalizabilno stanje
PageEntry je običan podatak, pa se stanje navigacije može bilježiti, uspoređivati i ponovno reproducirati.
Jednostavan resolver
Switch nad page.key održava rutiranje eksplicitnim i pregledivim.
Jedan izvor istine
Push i pop su operacije nad popisom _pages, a ne nuspojave.
Obrazac resolvera
Gradite prema ključu stranice i mijenjajte popis stranica deklarativno.
Naredba
Primjer 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')]);
}
Držite metapodatke laganima
Izbjegavajte stavljati Widget instance u stanje navigacije i držite PageEntry čistim metapodatkom radi održivosti.
Prethodno
InstalacijaSljedeće
Resolveri