Halaman sebagai data, UI lewat resolver
Simpan hanya metadata di PageEntry. Gunakan buildPage untuk memetakan setiap kunci halaman ke widget yang sebenarnya.
State yang bisa diserialkan
PageEntry hanyalah data biasa, jadi state navigasi bisa dicatat, dibedakan, dan diputar ulang.
Resolver sederhana
Switch pada page.key menjaga routing tetap eksplisit dan mudah ditinjau.
Satu sumber kebenaran
Push dan pop adalah operasi daftar pada _pages, bukan efek samping.
Pola resolver
Bangun berdasarkan kunci halaman dan ubah daftar halaman secara deklaratif.
Perintah
Contoh resolver
Widget _buildPage(BuildContext context, PageEntry page) {
switch (page.key) {
case 'home':
return HomePage(onGoDetail: _goDetail);
case 'detail':
return const DetailPage();
default:
return const SizedBox.shrink();
}
}
void _goDetail() {
setState(() => _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')]);
}
Jaga metadata tetap ringan
Hindari menempatkan instance Widget ke dalam state navigasi dan pertahankan PageEntry sebagai metadata murni untuk kemudahan pemeliharaan.