Декларативна навігація та оверлеї для Flutter.
Керуйте сторінками Navigator 2.0 і локальними оверлеями без Navigator.push/pop або showDialog.
Сторінки — це дані
PageEntry зберігає лише метадані. UI створюється вашим резолвером.
Локальні оверлеї
Діалоги та bottom sheet обмежені екраном без глобального стану.
Незалежно від стану
Використовуйте setState, Riverpod, Bloc або Provider. Залежності не потрібні.
Перші кроки
Встановіть declarative_nav і рендерьте сторінки через callback резолвера.
Встановлення
flutter pub add declarative_nav
Посібник з використання
app_root.dart
class AppRoot extends StatefulWidget {
const AppRoot({super.key});
@override
State<AppRoot> createState() => _AppRootState();
}
class _AppRootState extends State<AppRoot> {
OverlayRequest? _overlay;
late List<PageEntry> _pages;
@override
void initState() {
super.initState();
_pages = const [PageEntry(key: 'home', name: '/home')];
}
Widget buildPage(BuildContext context, PageEntry page) {
return HomePage(onOpenDialog: _openDialog);
}
@override
Widget build(BuildContext context) {
return DeclarativePagesNavigator(
pages: _pages,
buildPage: buildPage,
onPopTop: _popTop,
canPopTop: () => _overlay == null,
);
}
}
Важлива примітка
Цей пакет уникає Navigator.push/pop і викликів showDialog. Керуйте навігацією та оверлеями зі стану.
Попередня
ОглядНаступна
Встановлення