ਡਾਟਾ ਵਜੋਂ ਪੰਨੇ, 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