Navigasi deklaratif dan overlay untuk Flutter.

Kawal halaman Navigator 2.0 dan overlay setempat skrin tanpa Navigator.push/pop atau showDialog.

Halaman ialah Data

PageEntry hanya menyimpan metadata. UI dibina oleh resolver anda.

Overlay setempat skrin

Dialog dan bottom sheet dihadkan bagi setiap skrin tanpa keadaan global.

Tidak bergantung pada keadaan

Gunakan setState, Riverpod, Bloc atau Provider. Tiada kebergantungan diperlukan.

Langkah Pertama

Pasang declarative_nav dan render halaman melalui callback resolver.

Pemasangan

flutter pub add declarative_nav

Panduan Penggunaan

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,
    );
  }
}
Nota Penting

Pakej ini mengelakkan Navigator.push/pop dan panggilan showDialog. Kawal navigasi dan overlay dari keadaan.