Flutter için bildirime dayalı gezinme ve overlay'ler.

Navigator.push/pop veya showDialog olmadan Navigator 2.0 sayfalarını ve ekran yerel overlay'leri yönetin.

Sayfalar veridir

PageEntry yalnızca metaveri saklar. UI, resolver'ınız tarafından oluşturulur.

Ekran yerel overlay'ler

Diyaloglar ve bottom sheet'ler küresel durum olmadan ekrana göre sınırlandırılır.

Durumdan bağımsız

setState, Riverpod, Bloc veya Provider kullanın. Bağımlılık gerekmez.

İlk adımlar

declarative_nav'ı kurun ve sayfaları resolver callback ile render edin.

Kurulum

flutter pub add declarative_nav

Kullanım Kılavuzu

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,
    );
  }
}
Önemli Not

Bu paket Navigator.push/pop ve showDialog çağrılarını önler. Gezinme ve overlay'leri durumdan yönetin.