Управлявайте Navigator 2.0 от състоянието.
declarative_nav ви позволява да управлявате страници и оверлеи като обикновено състояние, без да извиквате директно Navigator.push/pop или showDialog.
Страниците като данни
PageEntry не съдържа Widget типове. Потребителският интерфейс се изгражда чрез callback-а на вашия резолвер.
Локални за екрана оверлеи
Диалозите и панелите могат да се ограничават по екран, включително локално състояние за табовете, когато е нужно.
Независимо от управлението на състоянието
Работи със setState, Riverpod, Bloc, Provider или всеки друг слой за управление на състоянието.
Начален поток
Инсталирайте пакета, след което преместете страниците и оверлеите в явно състояние.
Инсталация
Начална структура
class AppRootState extends State<AppRoot> {
OverlayRequest? _overlay;
late List<PageEntry> _pages;
@override
void initState() {
super.initState();
_pages = const [PageEntry(key: 'home', name: '/home')];
}
Widget build(BuildContext context) {
return DeclarativePagesNavigator(
pages: _pages,
buildPage: _buildPage,
onPopTop: _popTop,
canPopTop: () => _overlay == null,
);
}
}
Основно правило
Не смесвайте императивно push/pop и декларативен List<PageEntry> за един и същ стек. Поддържането на един източник на истина предотвратява разминаванията в навигацията.
Предишна
OSSСледваща
Инсталация