Беттер дерек ретінде, UI резолвер арқылы
PageEntry ішінде тек метадеректі сақтаңыз. Әр бет кілтін нақты widget-ке сәйкестендіру үшін buildPage қолданыңыз.
Сериалданатын күй
PageEntry қарапайым дерек болғандықтан, навигация күйін журналдауға, diff жасауға және қайта ойнатуға болады.
Қарапайым резолвер
page.key бойынша switch қолдану бағыттауды айқын әрі қарауға ыңғайлы етеді.
Бір ғана ақиқат көзі
_pages ішіндегі push және pop - side effect емес, тізім операциялары.
Резолвер үлгісі
Бет кілті бойынша құрып, беттер тізімін декларативті түрде өзгертіңіз.
Бет күйінің ережесі
Резолвер мысалы
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')]);
}
Метадеректі жеңіл ұстаңыз
Navigation күйіне Widget инстанцияларын салудан аулақ болыңыз және PageEntry-ді техникалық қызмет көрсету үшін таза метадерек ретінде қалдырыңыз.
Алдыңғы
ОрнатуКелесі
Overlay-лер