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

Pemasangan

Seterusnya

Overlay