Deklaratyvi navigacija ir overlay'ai Flutteriui.
Valdykite Navigator 2.0 puslapius ir ekrano lokalinius overlay'us be Navigator.push/pop ar showDialog.
Puslapiai yra duomenys
PageEntry saugo tik metaduomenis. UI sukuria jūsų resolveris.
Ekrano lokalūs overlay'ai
Dialogai ir bottom sheet'ai yra ribojami kiekvienam ekranui be globalaus būsenos.
Nepriklausoma nuo būsenos
Naudokite setState, Riverpod, Bloc ar Provider. Priklausomybių nereikia.
Pirmieji žingsniai
Įdiekite declarative_nav ir renderinkite puslapius per resolverio callback.
Diegimas
flutter pub add declarative_nav
Naudojimo vadovas
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,
);
}
}
Svarbi pastaba
Šis paketas vengia Navigator.push/pop ir showDialog iškvietimų. Valdykite navigaciją ir overlay'us iš būsenos.