ડેટા તરીકે પેજ, Resolver દ્વારા UI
PageEntry માં માત્ર metadata રાખો. દરેક page key ને વાસ્તવિક widget સાથે નકશાંકિત કરવા buildPage નો ઉપયોગ કરો.
સીરીયલાઇઝ કરી શકાય તેવી state
PageEntry સાદું data છે, તેથી navigation state ને log, diff અને replay કરી શકાય છે.
સરળ resolver
page.key પર switch રાખવાથી routing સ્પષ્ટ અને reviewable રહે છે.
સત્યનું એકમાત્ર સ્ત્રોત
Push અને pop એ _pages પર list operations છે, side effects નથી.
Resolver પેટર્ન
page key પરથી build કરો અને page list ને ઘોષણાત્મક રીતે બદલો.
કમાન્ડ
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 ને હળવું રાખો
આને મૂકવાનું ટાળો navigation state માં Widget instances અને maintainability માટે PageEntry ને શુદ્ધ metadata તરીકે રાખો.
પાછળ
Installationઆગળ
Overlays