পেজকে ডেটা হিসেবে, UI রিজলভারের মাধ্যমে
PageEntry-এ শুধু metadata রাখুন। প্রতিটি page key-কে বাস্তব widget-এর সঙ্গে ম্যাপ করতে buildPage ব্যবহার করুন।
সিরিয়ালাইজযোগ্য স্টেট
PageEntry শুধু সাধারণ ডেটা রাখে, তাই নেভিগেশন স্টেট লগ করা, diff করা, এবং replay করা যায়।
সহজ রিজলভার
page.key-এর উপর switch ব্যবহার করলে রাউটিং স্পষ্ট ও পর্যালোচনাযোগ্য থাকে।
একক সত্যের উৎস
Push আর pop হলো _pages-এর list operation, কোনো পার্শ্বপ্রতিক্রিয়া নয়।
রিজলভার প্যাটার্ন
page key অনুযায়ী build করুন এবং page list-টি ঘোষণাভিত্তিকভাবে বদলান।
পেজ স্টেট নিয়ম
রিজলভার উদাহরণ
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')]);
}
মেটাডেটা হালকা রাখুন
নেভিগেশন স্টেটের মধ্যে Widget ইনস্ট্যান্স রাখবেন না, এবং রক্ষণাবেক্ষণের সুবিধার জন্য PageEntry-কে কেবল মেটাডেটা হিসেবে রাখুন।