Upravljajte Navigatorom 2.0 izravno iz stanja.

declarative_nav omogućuje vam upravljanje stranicama i preklapanjima kao jednostavnim stanjem, bez izravnog pozivanja Navigator.push/pop ili showDialog.

Stranice kao podaci

PageEntry ne sadrži Widget tipove. UI se gradi kroz vaš resolver callback.

Lokalni overlayi

Dijalozi i bottom sheetovi mogu biti ograničeni na zaslon, uključujući stanje lokalno za karticu kada je to potrebno.

Neovisan o upravitelju stanja

Radi s setState, Riverpod, Bloc, Provider ili bilo kojim drugim slojem stanja.

Tijek početka rada

Instalirajte paket, a zatim premjestite stranice i preklapanja u eksplicitno stanje.

Instalacija

Starter oblik

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,
    );
  }
}
Glavno pravilo

Nemojte miješati imperativni push/pop i deklarativni List<PageEntry> za isti stog. Održavanje jednog izvora istine sprječava odstupanja u navigaciji.

Prethodno

Pregled

Sljedeće

Instalacija