ਡਾਟਾ ਵਜੋਂ ਪੰਨੇ, resolver ਰਾਹੀਂ UI
PageEntry ਵਿੱਚ ਸਿਰਫ਼ metadata ਸੰਭਾਲੋ। ਹਰ page key ਨੂੰ ਅਸਲ widget ਨਾਲ map ਕਰਨ ਲਈ buildPage ਵਰਤੋ।
serializable state
PageEntry ਸਿਰਫ਼ ਡਾਟਾ ਹੈ, ਇਸ ਲਈ navigation state ਨੂੰ log, diff ਅਤੇ replay ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ.
ਸੌਖਾ resolver
page.key ਉੱਤੇ switch routing ਨੂੰ ਸਪੱਸ਼ਟ ਅਤੇ review ਕਰਨ ਯੋਗ ਰੱਖਦਾ ਹੈ.
ਸੱਚ ਦਾ ਇਕੋ ਸਰੋਤ
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