Сторінки як дані, 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 як чисті метадані для зручності підтримки.

Попередній

Встановлення

Наступний

Резолвери