Řiďte Navigator 2.0 ze stavu.

declarative_nav vám umožňuje spravovat stránky a overlaye jako prostý stav bez přímého volání Navigator.push/pop nebo showDialog.

Stránky jako data

PageEntry neuchovává typy Widget. UI se vytváří pomocí callbacku vašeho resolveru.

Overlaye lokální pro obrazovku

Dialogy a sheety lze vymezit pro konkrétní obrazovku, včetně stavu lokálního pro tab, když je potřeba.

Nezávislé na správě stavu

Funguje se setState, Riverpod, Bloc, Provider nebo s libovolnou jinou vrstvou stavu.

První kroky

Nainstalujte balíček a poté přesuňte stránky a overlaye do explicitního stavu.

Instalace

Úvodní struktura

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,
    );
  }
}
Základní pravidlo

Nemíchejte imperativní push/pop a deklarativní List<PageEntry> pro stejný zásobník. Jeden zdroj pravdy zabraňuje odchylkám v navigaci.

Předchozí

OSS

Další

Instalace