Halaman sebagai Data, UI melalui Resolver
Simpan hanya metadata dalam PageEntry. Gunakan buildPage untuk memetakan setiap page key kepada widget sebenar.
Keadaan boleh diserialkan
PageEntry ialah data biasa, jadi keadaan navigasi boleh dilog, dibanding beza, dan dimainkan semula.
Resolver yang ringkas
Switch pada page.key memastikan routing kekal jelas dan mudah disemak.
Satu sumber kebenaran
Push dan pop ialah operasi senarai pada _pages, bukannya side effects.
Corak Resolver
Bina mengikut page key dan ubah senarai halaman secara deklaratif.
Peraturan Keadaan Halaman
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')]);
}
Pastikan Metadata Ringkas
Elakkan meletakkan instance Widget ke dalam keadaan navigasi, dan kekalkan PageEntry sebagai metadata tulen demi kebolehselenggaraan.
Sebelumnya
PemasanganSeterusnya
Overlay