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 များ