Deklaratiivinen navigointi ja overlayt Flutterille.
Ohjaa Navigator 2.0 ‑sivuja ja näyttökohtaisia overlayeita ilman Navigator.push/pop tai showDialog.
Sivut ovat dataa
PageEntry tallentaa vain metatiedot. UI luodaan resolverillasi.
Näyttökohtaiset overlayt
Dialogit ja bottom sheetit rajataan per näyttö ilman globaalia tilaa.
Tilariippumaton
Käytä setStatea, Riverpodia, Blocia tai Provideria. Ei vaadi riippuvuuksia.
Ensiaskeleet
Asenna declarative_nav ja renderöi sivut resolver‑callbackilla.
Asennus
flutter pub add declarative_nav
Käyttöopas
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,
);
}
}
Tärkeä huomio
Tämä paketti välttää Navigator.push/pop ja showDialog-kutsut. Ohjaa navigointia ja overlayeita tilasta.
Edellinen
YleiskatsausSeuraava
Asennus