עמודים כנתונים, UI דרך Resolver
שמרו רק metadata בתוך PageEntry. השתמשו ב-buildPage כדי למפות כל page key ל-widget אמיתי.
State שניתן לסריאליזציה
PageEntry הוא נתון פשוט, ולכן אפשר לרשום, להשוות ולהריץ מחדש את state הניווט.
Resolver פשוט
switch על page.key שומר על routing מפורש וקל לסקירה.
מקור אמת יחיד
Push ו-pop הם פעולות על רשימת _pages, ולא תופעות לוואי.
תבנית Resolver
בנו לפי page key ועדכנו את רשימת העמודים באופן דקלרטיבי.
כלל מצב עמודים
דוגמת 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 אל state הניווט ושמרו על PageEntry כמטה-נתונים טהורים כדי לשפר תחזוקתיות.