Страници като данни, UI чрез резолвер
Съхранявайте в PageEntry само метаданни. Използвайте buildPage, за да свържете всеки ключ на страницата с реален widget.
Сериализирано състояние
PageEntry е обикновени данни, така че състоянието на навигацията може да се записва, сравнява и възпроизвежда.
Прост резолвер
switch върху page.key прави маршрутизацията ясна и подлежаща на преглед.
Един източник на истина
Push и pop са операции върху списъка _pages, а не странични ефекти.
Шаблон на резолвер
Строете по ключ на страница и променяйте списъка от страници декларативно.
Правило за състоянието на страницата
Пример за резолвер
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')]);
}
Дръжте метаданните леки
Избягвайте да поставяте екземпляри на Widget в състоянието на навигацията и запазете PageEntry като чисти метаданни за по-лесна поддръжка.
Предишна
ИнсталацияСледваща
Резолвери