Lehed andmetena, UI lahendaja kaudu

Hoia ainult metaandmeid PageEntry sees. Kasuta buildPage'i, et siduda iga lehe võti tegeliku widgetiga.

Serialiseeritav olek

PageEntry on lihtne andmeobjekt, nii et navigeerimise olekut saab logida, võrrelda ja taasesitada.

Lihtne lahendaja

Lüliti page.key peal hoiab marsruutimise selge ja ülevaadatavana.

Üks tõeallikas

Push ja pop on _pages-i loendioperatsioonid, mitte kõrvaltoimed.

Lahendaja muster

Ehita page key järgi ja muuda lehtede loendit deklaratiivselt.

Lehe oleku reegel

Lahendaja näide

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')]);
}
Hoia metaandmed kerged

Väldi Widgeti eksemplaride panemist navigeerimise olekusse ja hoia PageEntry hooldatavuse nimel puhta metaandmetena.

Eelmine

Paigaldus

Järgmine

Ülekatted