Navigator 2.0-ni vəziyyətdən idarə edin.

declarative_nav sizə səhifələri və örtükləri adi vəziyyət kimi idarə etməyə imkan verir; Navigator.push/pop və ya showDialog-u birbaşa çağırmağa ehtiyac yoxdur.

Səhifələr məlumat kimi

PageEntry Widget tiplərini saxlamır. UI resolver callback-i ilə qurulur.

Ekran-daxili örtüklər

Dialoqlar və vərəqlər ekran üzrə məhdudlaşdırıla bilər, lazım olduqda tab-daxili vəziyyət də daxil olmaqla.

Vəziyyət idarəsindən asılı deyil

setState, Riverpod, Bloc, Provider və ya başqa istənilən vəziyyət qatı ilə işləyir.

Başlanğıc axını

Paketi quraşdırın, sonra səhifələri və örtükləri açıq vəziyyətə keçirin.

Quraşdırma

İlkin quruluş

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 build(BuildContext context) {
    return DeclarativePagesNavigator(
      pages: _pages,
      buildPage: _buildPage,
      onPopTop: _popTop,
      canPopTop: () => _overlay == null,
    );
  }
}
Əsas qayda

Eyni stack üçün imperativ push/pop ilə deklarativ List<PageEntry>-ni qarışdırmayın. Tək həqiqət mənbəyini saxlamaq naviqasiya sürüşməsinin qarşısını alır.