Старонкі як даныя, UI праз рэзолвер

Захоўвайце ў PageEntry толькі метаданыя. Выкарыстоўвайце buildPage, каб супаставіць кожны ключ старонкі з рэальным віджэтам.

Серыялізаваны стан

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 як чыстыя метаданыя дзеля прасцейшага суправаджэння.

Папярэдняя

Усталяванне

Наступная

Перакрыцці