ناوبری اعلامی و پوشش‌ها برای Flutter.

صفحات Navigator 2.0 و پوشش‌های محلیِ صفحه را بدون Navigator.push/pop یا showDialog کنترل کنید.

صفحه‌ها داده هستند

PageEntry فقط فراداده را نگه می‌دارد. UI توسط ریزولور شما ساخته می‌شود.

پوشش‌های محلیِ صفحه

دیالوگ‌ها و شیت‌های پایین برای هر صفحه محدود می‌شوند بدون وضعیت سراسری.

مستقل از وضعیت

از setState، Riverpod، Bloc یا Provider استفاده کنید. نیازی به وابستگی نیست.

گام‌های نخست

declarative_nav را نصب کنید و صفحات را با callback ریزولور رندر کنید.

نصب

flutter pub add declarative_nav

راهنمای استفاده

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,
    );
  }
}
نکته مهم

این بسته از Navigator.push/pop و فراخوانی‌های showDialog پرهیز می‌کند. ناوبری و پوشش‌ها را از طریق وضعیت هدایت کنید.

بعدی

نصب