Deklarativ navigering och overlays för Flutter.

Styr Navigator 2.0-sidor och skärmlokala overlays utan Navigator.push/pop eller showDialog.

Sidor är data

PageEntry lagrar bara metadata. UI skapas av din resolver.

Skärmlokala overlays

Dialoger och bottom sheets är begränsade per skärm utan globalt tillstånd.

Tillståndsagnostisk

Använd setState, Riverpod, Bloc eller Provider. Inga beroenden krävs.

Första stegen

Installera declarative_nav och rendera sidor via en resolver-callback.

Installation

flutter pub add declarative_nav

Användarguide

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,
    );
  }
}
Viktig notering

Det här paketet undviker Navigator.push/pop och showDialog-anrop. Styr navigering och overlays från tillståndet.

Föregående

Översikt