Flutter-д зориулсан декларатив навигаци болон overlay-ууд.
Navigator.push/pop эсвэл showDialog ашиглахгүйгээр Navigator 2.0 хуудас болон дэлгэцийн локал overlay-уудыг удирдана.
Хуудас бол өгөгдөл
PageEntry зөвхөн мета өгөгдөл хадгална. UI-г таны resolver үүсгэнэ.
Дэлгэцийн локал overlay-ууд
Диалог ба bottom sheet-үүд нь дэлгэц тус бүрт хязгаарлагдана, глобал төлөвгүй.
Төлөвөөс үл хамаарах
setState, Riverpod, Bloc эсвэл Provider ашигла. Хамаарал шаардлагагүй.
Эхний алхамууд
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 дуудлагуудыг ашиглахгүй. Навигаци ба overlay-уудыг төлөвөөс удирд.