Anti-pola yang harus dihindari

Sebagian besar bug muncul saat model imperatif dan deklaratif dicampur. Pertahankan batas state yang ketat.

Mencampur push/pop dengan halaman

Jangan panggil `Navigator.push`/`pop` untuk stack yang sudah dikendalikan oleh `List<PageEntry>`.

Widget dalam state

Jangan menaruh instance `Widget` ke metadata halaman. Simpan hanya key dan pengenal mirip rute.

Key tak terbatas

Jangan menggunakan ulang nilai `PageEntry.key` yang duplikat dalam stack yang sama.

Daftar periksa migrasi

Gunakan daftar periksa ini saat meninjau refactor untuk menjaga arsitektur tetap konsisten.

Daftar periksa

Baik vs Buruk

// Buruk: mencampur pendekatan imperatif dan deklaratif untuk stack yang sama
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// Baik: perbarui hanya state deklaratif
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
Tips review

Saat review kode, lacak siapa yang memiliki mutasi stack dan tolak perubahan yang memodifikasi stack yang sama melalui beberapa API.

Berikutnya

Pengantar