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.

Sebelumnya

Instalasi

Berikutnya

Resolver