data ලෙස පිටු, resolver හරහා UI
PageEntry තුළ metadata පමණක් තබන්න. සෑම page key එකක්ම සැබෑ widget එකකට map කිරීමට buildPage භාවිතා කරන්න.
serializable state
PageEntry සාමාන්ය data නිසා navigation state log, diff සහ replay කළ හැක.
සරල resolver
page.key මත switch කිරීමෙන් routing පැහැදිලි සහ review කළ හැකිව පවතී.
එකම truth source එක
Push සහ pop යනු _pages list මත කරන operations වන අතර side effects නොවේ.
Resolver pattern
page key අනුව build කර page list එක declaratively වෙනස් කරන්න.
Command
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')]);
}
metadata සැහැල්ලු ලෙස තබන්න
තැබීමෙන් වළකින්න Widget instances navigation state තුළට සහ maintainability සඳහා PageEntry එක pure metadata ලෙස තබන්න.