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

OSS

Volgende

Installatie