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.