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

Предишна

Инсталация

Следваща

Резолвери