डेटाको रूपमा पृष्ठहरू, resolver मार्फत UI

PageEntry भित्र metadata मात्र राख्नुहोस्। हरेक page key लाई वास्तविक widget सँग मिलाउन 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 परिवर्तन गर्नुहोस्.

आदेश

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