Stuur Navigator 2.0 aan vanuit de state.
declarative_nav stelt u in staat om pagina's en overlays als gewone state te beheren, zonder rechtstreeks Navigator.push/pop of showDialog aan te roepen.
Pagina's als data
PageEntry bevat geen Widget-typen. De UI wordt opgebouwd via uw resolver-callback.
Scherm-lokale overlays
Dialogen en sheets kunnen per scherm worden beperkt, inclusief tabblad-lokale state indien nodig.
State-agnostisch
Werkt met setState, Riverpod, Bloc, Provider of elke andere statelaag.
Aan de slag-stappen
Installeer het pakket en verplaats pagina's en overlays naar expliciete state.
Installatie
Startstructuur
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,
);
}
}
Hoofdregel
Combineer geen imperatieve push/pop en declaratieve List<PageEntry> voor dezelfde stack. Het aanhouden van één 'source of truth' voorkomt navigatiedrift.
Vorige
OSSVolgende
Installatie