화면 로컬 오버레이 상태

다이얼로그와 시트를 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) 일관성 문제를 방지하세요.