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