Stranice kao podaci, UI kroz resolver

Čuvajte samo metapodatke u PageEntry. Koristite buildPage da mapirate svaki ključ stranice na stvarni widget.

Serijalizabilno stanje

PageEntry je običan podatak, pa se stanje navigacije može zapisivati, diffovati i ponovo reprodukovati.

Jednostavan resolver

Switch nad page.key zadržava rutiranje eksplicitnim i preglednim.

Jedan izvor istine

Push i pop su operacije nad listom _pages, a ne nuspojave.

Obrazac resolvera

Gradite prema ključu stranice i menjajte listu stranica deklarativno.

Command

Primer 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 laganim

Izbegavajte da postavljate Widget instance u stanje navigacije i držite PageEntry kao čiste metapodatke radi održavanja.

Prethodno

Instalacija

Sledeće

Resolveri