Сторінки як дані, UI через резолвер
Зберігайте лише метадані в PageEntry. Використовуйте buildPage, щоб зіставити кожен ключ сторінки з реальним віджетом.
Серіалізований стан
PageEntry — це звичайні дані, тож стан навігації можна логувати, порівнювати й відтворювати.
Простий резолвер
switch за page.key робить маршрутизацію явною й придатною для перегляду.
Єдине джерело істини
Push і pop — це операції зі списком _pages, а не побічні ефекти.
Шаблон резолвера
Будуйте за ключем сторінки й змінюйте список сторінок декларативно.
Command
Приклад резолвера
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 як чисті метадані для зручності підтримки.
Попередній
ВстановленняНаступний
Резолвери