Kendalikan Navigator 2.0 dari State

declarative_nav memungkinkan Anda mengelola halaman dan overlay sebagai state biasa tanpa memanggil Navigator.push/pop atau showDialog secara langsung.

Halaman sebagai Data

PageEntry tidak menyimpan tipe Widget. UI dibangun melalui callback resolver Anda.

Overlay Lokal Layar

Dialog dan sheet dapat dibatasi ruang lingkupnya per layar, termasuk state tab-lokal saat dibutuhkan.

Agnostik Manajemen State

Dapat digunakan bersama setState, Riverpod, Bloc, Provider, atau lapisan state lainnya.

Langkah Memulai

Instal paket ini, lalu pindahkan halaman dan overlay ke dalam state eksplisit.

Instalasi

Bentuk Awal

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,
    );
  }
}
Aturan Utama

Jangan mencampur push/pop imperatif dan List<PageEntry> deklaratif pada stack yang sama. Menjaga satu sumber kebenaran (source of truth) mencegah terjadinya pergeseran navigasi.

Sebelumnya

OSS

Berikutnya

Instalasi