Navigasi deklaratif dan overlay untuk Flutter.

Kendalikan halaman Navigator 2.0 dan overlay lokal layar tanpa Navigator.push/pop atau showDialog.

Halaman adalah Data

PageEntry hanya menyimpan metadata. UI dibuat oleh resolver Anda.

Overlay Lokal Layar

Dialog dan bottom sheet dibatasi per layar tanpa status global.

Agnostik Status

Gunakan setState, Riverpod, Bloc, atau Provider. Tidak perlu dependensi.

Langkah Pertama

Instal declarative_nav dan render halaman dengan callback resolver.

Instalasi

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

Paket ini menghindari Navigator.push/pop dan pemanggilan showDialog. Kendalikan navigasi dan overlay dari state.

Sebelumnya

Ikhtisar

Berikutnya

Instalasi