Vadiet Navigator 2.0 no stāvokļa.

declarative_nav ļauj pārvaldīt lapas un pārklājumus kā vienkāršu stāvokli, neizsaucot Navigator.push/pop vai showDialog tieši.

Lapas kā dati

PageEntry nesatur Widget tipus. UI tiek izveidots, izmantojot jūsu resolver atzvanu.

Ekrānam lokāli pārklājumi

Dialogu un paneļu apgabalu var ierobežot katram ekrānam, tostarp cilnes lokālajam stāvoklim pēc vajadzības.

Neatkarīgs no stāvokļa pārvaldības

Strādā ar setState, Riverpod, Bloc, Provider vai jebkuru citu stāvokļa slāni.

Darba sākšanas gaita

Instalējiet pakotni, pēc tam pārvietojiet lapas un pārklājumus uz eksplicītu stāvokli.

Instalēšana

Sākuma struktūra

class AppRootState extends State<AppRoot> {
  OverlayRequest? _overlay;
  late List<PageEntry> _pages;

  @override
  void initState() {
    super.initState();
    _pages = const [PageEntry(key: 'home', name: '/home')];
  }

  Widget build(BuildContext context) {
    return DeclarativePagesNavigator(
      pages: _pages,
      buildPage: _buildPage,
      onPopTop: _popTop,
      canPopTop: () => _overlay == null,
    );
  }
}
Pamatnoteikums

Nejauciet imperatīvo push/pop un deklaratīvo List<PageEntry> vienam un tam pašam stekam. Viena patiesības avota saglabāšana novērš navigācijas nobīdi.

Iepriekš

OSS