ទំព័រជាទិន្នន័យ, 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 សុទ្ធ ដើម្បីថែទាំបានល្អ។