화면 로컬 오버레이 상태
다이얼로그와 시트를 OverlayRequest? 로 표현하고, ScreenOverlayHost 또는 AnimatedScreenOverlayHost를 통해 렌더링합니다.
단일 오버레이 슬롯
오버레이를 OverlayRequest? 로 모델링하고, 이를 null로 비워서 닫습니다.
다이얼로그 및 시트 지원
선택적 페이로드 데이터와 함께 DialogRequest 및 BottomSheetRequest를 사용합니다.
뒤로가기 순서 제어
back-scope 위젯을 통해 오버레이를 먼저 닫고, 그 다음에 페이지를 pop합니다.
오버레이 호스트 패턴
오버레이를 상태로 유지하고, overlayBuilder를 통해 오버레이 UI를 빌드합니다.
오버레이 상태 규칙
애니메이션 오버레이 호스트
return AnimatedScreenOverlayHost(
overlay: _overlay,
onDismiss: _dismissOverlay,
overlayBuilder: (context, req, dismiss) => switch (req) {
DialogRequest(key: 'hello') => AlertDialog(
title: const Text('Hello'),
actions: [TextButton(onPressed: dismiss, child: const Text('Close'))],
),
_ => null,
},
child: DeclarativePagesNavigator(
pages: _pages,
buildPage: _buildPage,
onPopTop: _popTop,
canPopTop: () => _overlay == null,
),
);
중요 사항
오버레이가 활성화되어 있을 때는, canPopTop을 사용하여 팝 제스처를 차단 하여 iOS의 백 스와이프(back-swipe) 일관성 문제를 방지하세요.