Flutter کے لیے اعلانیہ نیویگیشن اور اوورلے۔
Navigator.push/pop یا showDialog کے بغیر Navigator 2.0 صفحات اور اسکرین لوکل اوورلے کنٹرول کریں۔
صفحات ہی ڈیٹا ہیں
PageEntry صرف میٹاڈیٹا محفوظ رکھتا ہے۔ UI آپ کے resolver سے بنتا ہے۔
اسکرین لوکل اوورلے
ڈائیلاگ اور bottom sheet ہر اسکرین تک محدود ہوتے ہیں، بغیر گلوبل اسٹیٹ کے۔
اسٹیٹ سے آزاد
setState، Riverpod، Bloc یا Provider استعمال کریں۔ کسی dependency کی ضرورت نہیں۔
پہلے اقدامات
declarative_nav انسٹال کریں اور resolver callback سے صفحات render کریں۔
انسٹالیشن
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 کالز سے بچتا ہے۔ نیویگیشن اور اوورلے کو اسٹیٹ سے چلائیں۔