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

Yleiskatsaus

Seuraava

Asennus