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.

Következő

Resolverek