Deklarative Navigation und Overlays für Flutter.

Steuern Sie Navigator-2.0-Seiten und bildschirmlokale Overlays ohne Navigator.push/pop oder showDialog.

Seiten sind Daten

PageEntry speichert nur Metadaten. Das UI wird durch Ihren Resolver erstellt.

Bildschirmlokale Overlays

Dialoge und Bottom Sheets sind pro Bildschirm begrenzt, ohne globalen Zustand.

Zustandsagnostisch

Nutzen Sie setState, Riverpod, Bloc oder Provider. Keine Abhängigkeiten erforderlich.

Erste Schritte

Installieren Sie declarative_nav und rendern Sie Seiten über einen Resolver-Callback.

Installation

flutter pub add declarative_nav

Nutzungshandbuch

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,
    );
  }
}
Wichtiger Hinweis

Dieses Paket vermeidet Navigator.push/pop und showDialog-Aufrufe. Steuern Sie Navigation und Overlays stattdessen über den Zustand.