data အဖြစ် စာမျက်နှာများ, resolver ဖြင့် UI
PageEntry ထဲတွင် metadata ပဲ သိမ်းပါ။ စာမျက်နှာ key တစ်ခုချင်းစီကို widget အမှန်တကယ်နှင့် map လုပ်ရန် buildPage ကိုသုံးပါ.
serializable state
PageEntry သည် ရိုးရှင်းသော data ဖြစ်သောကြောင့် navigation state ကို log, diff နှင့် replay လုပ်နိုင်သည်.
ရိုးရှင်းသော resolver
page.key ပေါ်ရှိ switch သည် routing ကို ရှင်းလင်းပြီး review လုပ်လို့ရအောင် ထားသည်.
တစ်ခုတည်းသော truth source
Push နှင့် pop သည် _pages စာရင်းပေါ်ရှိ 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 အဖြစ်ထားပါ.
ယခင်
တပ်ဆင်ခြင်းနောက်တစ်ခု
Resolver များ