ໜ້າເປັນຂໍ້ມູນ, UI ຜ່ານ resolver
ເກັບພຽງ metadata ໃນ PageEntry. ໃຊ້ buildPage ເພື່ອ map ແຕ່ລະຄີຂອງໜ້າໄປຫາ widget ຈິງ.
ສະຖານະທີ່ serializable
PageEntry ແມ່ນຂໍ້ມູນທົ່ວໄປ, ດັ່ງນັ້ນ navigation state ສາມາດ log, diff ແລະ replay ໄດ້.
resolver ງ່າຍໆ
switch ທີ່ page.key ຮັກສາ routing ໃຫ້ຊັດເຈນແລະກວດທົດສອບໄດ້.
ແຫຼ່ງຄວາມຈິງດຽວ
Push ແລະ pop ແມ່ນການດຳເນີນງານກັບລາຍການ _pages ບໍ່ແມ່ນ side effects.
resolver pattern
ສ້າງຕາມ page key ແລະປ່ຽນລາຍການໜ້າແບບ declarative.
Command
resolver example
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')]);
}
ຮັກສາ metadata ໃຫ້ບາງ
ຫຼີກລ້ຽງການວາງ Widget instances ເຂົ້າໄປໃນ navigation state ແລະເກັບ PageEntry ເປັນ metadata ລ້ວນໆ ເພື່ອຄວາມງ່າຍໃນການບຳລຸງ.
ກ່ອນໜ້າ
ການຕິດຕັ້ງຕໍ່ໄປ
ແທັບ