Lapas kā dati, UI caur atrisinātāju
Saglabājiet tikai metadatus PageEntry. Izmantojiet buildPage, lai katru lapas atslēgu sasaistītu ar reālu logrīku.
Serializējams stāvoklis
PageEntry ir vienkārši dati, tāpēc navigācijas stāvokli var žurnalēt, salīdzināt un atskaņot.
Vienkāršs atrisinātājs
switch pēc page.key uztur maršrutēšanu skaidru un pārskatāmu.
Viens patiesības avots
Push un pop ir saraksta operācijas uz _pages, nevis blakusefekti.
Atrisinātāja paraugs
Veidojiet pēc lapas atslēgas un deklaratīvi mainiet lapu sarakstu.
Lapas stāvokļa noteikums
Atrisinātāja piemērs
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')]);
}
Metadatiem jābūt lakoniskiem
Izvairieties ievietot Widget instances navigācijas stāvoklī un saglabājiet PageEntry kā tīrus metadatus uzturamībai.
Iepriekš
InstalēšanaTālāk
Pārklājumi