Halaman sebagai Data, UI via Resolver

Simpan hanya metadata di PageEntry. Gunakan buildPage untuk memetakan setiap kunci halaman ke widget yang sebenarnya.

State Terserialisasi

PageEntry hanyalah data biasa, sehingga state navigasi dapat dicatat, dibandingkan (diffed), dan diputar ulang.

Resolver Sederhana

Penggunaan switch pada page.key menjaga perutean (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.

Aturan State 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')]);
}
Jaga Metadata Tetap Ringan

Hindari menempatkan instance Widget ke dalam state navigasi dan pertahankan PageEntry sebagai metadata murni untuk kemudahan pemeliharaan.

Sebelumnya

Instalasi

Berikutnya

Overlay