ဒေတာအဖြစ် စာမျက်နှာများ၊ Resolver မှတစ်ဆင့် UI
DeclarativeTabsScaffold သည် တစ်ခုချင်းစီသော tab ၏ page list ကို သီးခြားထားပြီး declarative updates များကို ဆက်လက်ထိန်းသိမ်းပေးသည်။
မှတ်တမ်းတင်နိုင်သော အခြေအနေ
PageEntry သည် ရိုးရှင်းသော data ဖြစ်သောကြောင့် navigation state ကို log လုပ်ခြင်း၊ diff လုပ်ခြင်း၊ replay လုပ်ခြင်းတို့ ပြုလုပ်နိုင်သည်။
ရိုးရှင်းသော Resolver
page.key ပေါ်ရှိ switch သည် routing ကို ရှင်းလင်းပြီး ပြန်လည်စစ်ဆေးနိုင်အောင် ထိန်းပေးသည်။
အမှန်တရားတစ်ခုတည်း
Push နှင့် pop သည် _pages ပေါ်ရှိ list လုပ်ဆောင်ချက်များသာ ဖြစ်ပြီး side effects မဟုတ်ပါ။
Resolver ပုံစံ
page key အလိုက် တည်ဆောက်ပြီး 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 ကို ပေါ့ပါးစေပါ
နေဗီဂေးရှင်း အခြေအနေထဲသို့ ဝစ်ဂျက် ဥပမာများ ထည့်သွင်းခြင်းကို ရှောင်ပြီး ပြုပြင်ထိန်းသိမ်းရန် PageEntry ကို သန့်ရှင်းသော metadata အဖြစ်သာ ထားပါ။
ယခင်
တပ်ဆင်ခြင်းနောက်တစ်ခု
အိုဗာလေများ