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.

Ankstesnis

Apžvalga