עמודים כנתונים, 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 כמטה-נתונים טהורים כדי לשפר תחזוקתיות.

הקודם

התקנה

הבא

Overlays