รูปแบบที่ควรหลีกเลี่ยง
บั๊กส่วนใหญ่มักเกิดเมื่อเอาโมเดลแบบ imperative และ declarative มาปนกัน จงรักษาขอบเขตของ state ให้ชัดเจน
การผสม push/pop กับหน้า
อย่าเรียก Navigator.push/pop สำหรับ stack ที่ถูกควบคุมโดย List<PageEntry> อยู่แล้ว
Widget ใน state
อย่าใส่ Widget instance ลงใน metadata ของหน้า เก็บไว้เฉพาะ keys และตัวระบุที่คล้าย route เท่านั้น
คีย์ซ้ำ
อย่านำค่า PageEntry.key ที่ซ้ำกันมาใช้ซ้ำใน stack เดียวกัน
เช็กลิสต์การย้ายระบบ
ใช้เช็กลิสต์นี้ระหว่างการรีวิวรีแฟกเตอร์ เพื่อให้สถาปัตยกรรมคงความสอดคล้องกัน
เช็กลิสต์
ดี / ไม่ดี
// แย่: เอาวิธีแบบ imperative และ declarative มาปนกันสำหรับ stack เดียวกัน
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// ดี: อัปเดตเฉพาะ state แบบ declarative
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
เคล็ดลับการรีวิว
ระหว่างการรีวิวโค้ด ให้ติดตาม ว่าใครเป็นเจ้าของการเปลี่ยนแปลง stack และปฏิเสธการเปลี่ยนแปลงที่แก้ไข stack เดิมผ่านหลาย API
ก่อนหน้า
การจัดการย้อนกลับถัดไป
บทนำ