Deklaratīva navigācija un overlayi Flutter.

Pārvaldiet Navigator 2.0 lapas un ekrāna lokālos overlayus bez Navigator.push/pop vai showDialog.

Lapas ir dati

PageEntry glabā tikai metadatus. UI izveido jūsu resolveris.

Ekrāna lokālie overlayi

Dialogi un bottom sheet tiek ierobežoti katrā ekrānā bez globāla stāvokļa.

Neatkarīgs no stāvokļa

Lietojiet setState, Riverpod, Bloc vai Provider. Nav nepieciešamas atkarības.

Pirmie soļi

Instalējiet declarative_nav un renderējiet lapas ar resolver callback.

Instalēšana

flutter pub add declarative_nav

Lietošanas ceļvedis

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,
    );
  }
}
Svarīga piezīme

Šī pakete izvairās no Navigator.push/pop un showDialog izsaukumiem. Vadiet navigāciju un overlayus no stāvokļa.

Iepriekšējais

Pārskats

Nākamais

Instalēšana