Oldalak adatként, UI resolveren keresztül
A PageEntryben csak metadatát tárolj. A buildPage segítségével képezd le minden oldalkulcsot a tényleges widgetre.
Sorosítható állapot
A PageEntry puszta adat, így a navigációs állapot naplózható, diffelhető és újrajátszható.
Egyszerű resolver
A page.key-n végzett switch explicit és ellenőrizhető útválasztást tart fenn.
Egyetlen igazságforrás
A push és a pop az _pages listán végzett műveletek, nem mellékhatások.
Resolver mintázat
Építs oldal kulcs alapján, és módosítsd az oldallistát deklaratívan.
Command
Resolver példa
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')]);
}
Tartsd könnyűn a metaadatokat
Kerüld az elhelyezését Widget-példányok a navigációs állapotba és tartsd a PageEntry-t tiszta metaadatként a karbantarthatóság érdekében.
Előző
TelepítésKövetkező
Resolverek