ຮູບແບບທີ່ຄວນຫຼີກລ້ຽງ
ບັກສ່ວນໃຫຍ່ເກີດເມື່ອແບບຈໍາລອງ imperative ແລະ declarative ຖືກປະສົມກັນ. ຮັກສາເຂດ state ໃຫ້ແຈ້ງຊັດ.
ປະສົມ push/pop ກັບ pages
ຢ່າເອີ້ນ `Navigator.push`/`pop` ສໍາລັບ stack ທີ່ `List<PageEntry>` ຄວບຄຸມຢູ່ແລ້ວ.
Widget ໃນ state
ຢ່າໃສ່ instance ຂອງ `Widget` ໃນ metadata ຂອງ page. ເກັບພຽງ keys ແລະຕົວລະບຸທີ່ຄ້າຍ route ເທົ່ານັ້ນ.
ຄີທີ່ຊ້ຳຊ້ອນ
ຢ່ານໍາໃຊ້ຄ່າ `PageEntry.key` ທີ່ຊ້ຳກັນໃນ stack ດຽວກັນ.
ລາຍການກວດສອບການຍ້າຍ
ໃຊ້ checklist ນີ້ໃນລະຫວ່າງການທົບທວນ refactor ເພື່ອຮັກສາໂຄງສ້າງໃຫ້ສອດຄ່ອງ.
ລາຍການກວດສອບ
ດີ ແລະ ບໍ່ດີ
// ບໍ່ດີ: ປະສົມ imperative ແລະ declarative ສໍາລັບ stack ດຽວກັນ
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// ດີ: ອັບເດດພຽງ declarative state
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
ເຄັດລັບການທົບທວນ
ໃນລະຫວ່າງ code review, ຕິດຕາມ ໃຜເປັນເຈົ້າຂອງການປ່ຽນ stack ແລະປະຕິເສດການປ່ຽນແປງທີ່ແກ້ໄຂ stack ດຽວກັນຜ່ານ API ຫຼາຍຕົວ.