Sahifalar ma'lumot sifatida, UI Resolver orqali
PageEntry ichida faqat metadata saqlang. Har bir page key ni haqiqiy widgetga moslash uchun buildPage dan foydalaning.
Serializatsiya qilinadigan holat
PageEntry oddiy ma'lumotdir, shuning uchun navigatsiya holatini loglash, diff qilish va qayta ijro etish mumkin.
Oddiy resolver
page.key ustidagi switch marshrutlashni aniq va ko'rib chiqish mumkin bo'lgan holda saqlaydi.
Yagona haqiqat manbai
Push va pop _pages ustidagi ro'yxat amallari, yon ta'sirlar emas.
Resolver namunasi
page key bo'yicha quring va sahifalar ro'yxatini deklarativ tarzda o'zgartiring.
Sahifa holati qoidasi
Resolver misoli
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')]);
}
Metadatani ixcham saqlang
Joylashtirishdan saqlaning Widget instansiyalarini navigatsiya holatiga va qo'llab-quvvatlash qulay bo'lishi uchun PageEntry ni sof metadata sifatida saqlang.
Oldingi
O'rnatishKeyingi
Overlaylar