ناوبری اعلامی و پوششها برای 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 پرهیز میکند. ناوبری و پوششها را از طریق وضعیت هدایت کنید.