???? ???
Store ?? metadata ?? PageEntry. Use buildPage ? map each page key ? an actual widget.
직렬화 가능한 상태
PageEntry is plain data, so navigation state can be logged, diffed, ? replayed.
간단한 resolver
A switch on page.key keeps routing explicit ? reviewable.
One source ? truth
Push ? pop are list operations on _pages, not side effects.
Resolver 패턴
Build by page key ? mutate the page list declaratively.
Command
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')]);
}
메타데이터를 가볍게 유지
배치하지 마세요 Widget 인스턴스를 내비게이션 상태에 ? keep PageEntry as pure metadata ? maintainability.
Previous
InstallationNext
Overlays