Deklaratiivne navigeerimine ja overlay'd Flutteri jaoks.
Juhi Navigator 2.0 lehti ja ekraanipõhiseid overlay'sid ilma Navigator.push/pop või showDialog.
Lehed on andmed
PageEntry salvestab ainult metaandmed. UI luuakse sinu resolveri poolt.
Ekraanipõhised overlay'd
Dialoogid ja bottom sheet'id on iga ekraani piires ilma globaalse olekuta.
Olekust sõltumatu
Kasuta setState, Riverpod, Bloc või Provider. Sõltuvusi pole vaja.
Esimesed sammud
Paigalda declarative_nav ja renderda lehed resolveri callback'iga.
Paigaldus
flutter pub add declarative_nav
Kasutusjuhend
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,
);
}
}
Oluline märkus
See pakett väldib Navigator.push/pop ja showDialogi väljakutseid. Juhi navigeerimist ja overlay'sid oleku kaudu.