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.