ទំព័រជាទិន្នន័យ, UI តាម Resolver

រក្សាទុកតែ metadata នៅក្នុង PageEntry។ ប្រើ buildPage ដើម្បីផ្គូផ្គង key របស់ page នីមួយៗទៅជា widget ពិត។

ស្ថានភាពអាច serialize បាន

PageEntry ជាទិន្នន័យសុទ្ធ ដូច្នេះ state នាវីហ្គេស្យុងអាចកត់ត្រា ប្រៀបធៀប និងលេងឡើងវិញបាន។

Resolver សាមញ្ញ

switch លើ page.key ធ្វើឲ្យ routing ច្បាស់ និងងាយ review។

ប្រភពពិតតែមួយ

_pages ត្រូវបានកែតែជាប្រតិបត្តិការលើ list ប៉ុណ្ណោះ មិនមែន side effects ទេ។

លំនាំ Resolver

បង្កើតតាម page key ហើយកែប្រែបញ្ជី page ជា declarative។

ច្បាប់ស្ថានភាពទំព័រ

ឧទាហរណ៍ 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 ទៅក្នុង state នាវីហ្គេស្យុង ហើយរក្សា PageEntry ជា metadata សុទ្ធ ដើម្បីថែទាំបានល្អ។