डेटाको रूपमा पृष्ठहरू, 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