Puslapiai kaip duomenys, UI per resolverį
Saugokite tik metaduomenis PageEntry. Naudokite buildPage, kad kiekvieną puslapio raktą susietumėte su tikru widgetu.
Serializuojama būsena
PageEntry yra paprasti duomenys, todėl navigacijos būseną galima žurnaluoti, diffinti ir atkurti.
Paprastas resolveris
Perjungimas pagal page.key išlaiko maršrutizavimą aiškų ir peržiūrimą.
Vienas tiesos šaltinis
Push ir pop yra _pages sąrašo operacijos, o ne šalutiniai poveikiai.
Resolverio modelis
Kurkite pagal puslapio raktą ir deklaratyviai keiskite puslapių sąrašą.
Komanda
Resolverio pavyzdys
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')]);
}
Laikykite metaduomenis lengvus
Venkite talpinti Widget egzempliorius į navigacijos būseną ir laikykite PageEntry grynais metaduomenimis dėl palaikomumo.
Ankstesnis
DiegimasKitas
Resolveriai