Skip to content

fix: 확장 원샷 모프·오버레이 몰입 탭 토글·후기 바운스 블러 동기화#194

Merged
seizeh merged 1 commit into
mainfrom
fix/expand-oneshot-overlay-toggle
Jul 26, 2026
Merged

fix: 확장 원샷 모프·오버레이 몰입 탭 토글·후기 바운스 블러 동기화#194
seizeh merged 1 commit into
mainfrom
fix/expand-oneshot-overlay-toggle

Conversation

@seizeh

@seizeh seizeh commented Jul 26, 2026

Copy link
Copy Markdown
Owner

실기기 피드백 3건 반영.

1. 게시글 확장 2단계 끊김 → 원샷 모프

진단

후기 상세와 게시글 상세의 확장 경로를 비교한 결과, 전환 구현 자체(윈도 rect 보간·커브)는 동일했고 차이는 두 가지:

  1. 앱바 오버레이 아이콘의 중간 등장 — CollapsibleView 의 카드 크로스페이드는 t≈0.5 부터 카드 → 콘텐츠로 블렌드되는데, 게시글은 공유·수정/채팅·신고 아이콘 3~4개가 이 시점에 콘텐츠와 함께 나타나 "멈칫 → 버튼 생김 → 마저 확장"의 단계 전환 신호가 됐다(후기는 앱바 아이콘이 없거나 1개라 원샷으로 읽힘). isMyPost 는 동기값이라 상태 로드 때문에 늦게 나타나는 것은 아니었음.
  2. 초기 로드의 리빌드 폭풍_state.init() 이 댓글·조회수·팔로우·권한·모드 로드를 즉시 시작하고, 각 notifyListeners 가 확장 모프 중 ListenableBuilder 아래 화면 전체를 리빌드(RepaintBoundary 캐시 무효화)해 프레임 히치를 만들었다.

수정

  • 모션 공용 CollapseSettledFade 추가(collapse_route.dart): 확장 전환이 안착(진행도 1)한 뒤에만 페이드 인, 전환·축소 중엔 숨김(카드에 없는 요소가 모프에 섞이지 않게). 게시글·후기 상세의 앱바 아이콘에 적용.
  • 카드 확장 진입 시 _state.init() 을 전환 안착 뒤(480ms)로 지연 — 게시글 본문은 widget.post 로 이미 완전해 첫 프레임 표시에 영향 없음. 직진입(딥링크)은 즉시.

2. 오버레이 몰입 탭 토글 (신규)

  • 사진 게시글(PostMediaHero)·후기 사진 페이지: 화면 탭 → 블러 패널(제목·본문·스탯 오버레이 전체)이 180~200ms 페이드로 숨고 미디어만 감상, 다시 탭 → 복귀. 숨김 중엔 IgnorePointer 로 오버레이 터치 차단.
  • 함께 숨김(권장안 채택): 앱바 오버레이 아이콘(CollapseSettledFade.visible), 후기 1/N 인디케이터. 영상 페이지/영상 게시글의 탭은 기존 재생/일시정지 유지(토글 없음).
  • 숨김 상태에서 축소 시작 → 게시글은 오버레이가 페이드 인으로 복귀하며 카드 미러로 수축(카드엔 오버레이가 있으므로), 후기는 타일에 패널이 없어 숨김 유지. 두 화면 모두 축소 시작 시 _overlayHidden 을 해제해 드래그 취소로 돌아와도 보이는 상태.
  • 후기에서 숨김 상태로 영상 페이지에 스와이프 진입하면 자동 복귀(영상 페이지 탭은 재생 토글이라 되살릴 방법이 없는 함정 방지).
  • 본문 자동 펼침 상태는 숨김/복귀와 독립(이전 펼침 상태 유지).

3. 후기 바운스(오버스크롤) 블러 분리

  • 원인: 블러 페이지 팔로워가 쓰던 PageController.page 는 내부적으로 픽셀을 스크롤 범위로 클램프해, 첫/마지막 페이지의 바운스 오버스크롤 구간에서 값이 멈춘다 → 본체는 손가락을 따라 밀리는데 블러는 정지.
  • 수정: position.pixels / viewportDimension 으로 fractional page 를 직접 계산해 범위 밖 값까지 그대로 반영 — 본체 PageView 와 바운스까지 픽셀 동기. 클램프는 사본 선택 인덱스에만 유지(translate 오프셋에는 미적용).

검증

  • flutter analyze 새 이슈 0, dart format 적용
  • flutter build ios --no-codesign --debug 성공

판단 사항

  • 초기 로드 지연은 480ms(확장 420ms + 여유) 고정 — 댓글 카운트 표시가 반 박자 늦지만 시트 열람 전 완료. CollapseProgress 는 화면 State 위 컨텍스트에서 읽을 수 없어 시간 기반이 가장 단순·안전.
  • 앱바 아이콘이 축소 전환 중에도 숨게 되어(카드에 없는 요소) 축소 모프도 함께 깔끔해짐.
  • 후기 진행바는 영상 페이지에서만 보이고 그 경우 숨김이 자동 해제되므로 별도 조건 불요.

🤖 Generated with Claude Code

- 게시글 확장이 2단계로 끊겨 보이던 문제: 원인은 (1) 앱바 오버레이
  아이콘들이 카드 크로스페이드 중간(t≈0.5)에 콘텐츠와 함께 불쑥 나타나
  단계 전환 신호를 만들고, (2) _state.init() 의 로드 알림들이 확장 모프
  중 화면 전체를 리빌드해 프레임을 흔든 것. CollapseSettledFade(모션 공용)
  로 앱바 아이콘을 전환 안착 후 페이드 인시키고, 카드 확장 진입 시 초기
  로드를 안착 뒤로 지연(직진입은 즉시) — 후기 상세와 같은 원샷 모프.
- 오버레이 몰입 탭 토글(신규): 사진 게시글·후기 사진 페이지에서 화면 탭 →
  블러 패널·앱바 아이콘·인디케이터가 부드럽게 숨고 다시 탭으로 복귀.
  영상 탭은 기존 재생/일시정지 유지(제외). 숨김 중 축소를 시작하면
  오버레이가 페이드 인으로 복귀하며 카드 미러로 수축(게시글). 후기는
  숨김 상태로 영상 페이지 진입 시 자동 복귀(되살릴 탭이 없는 함정 방지).
  본문 펼침 상태는 숨김/복귀와 무관하게 유지.
- 후기 스와이프 바운스 시 블러 분리: PageController.page 가 픽셀을 스크롤
  범위로 클램프해 오버스크롤을 반영하지 못하던 것 — 픽셀/뷰포트로 직접
  계산해 범위 밖 fractional page 까지 본체와 픽셀 동기로 추종(클램프는
  사본 선택 인덱스에만).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@seizeh
seizeh merged commit cdcf43b into main Jul 26, 2026
1 check passed
@seizeh
seizeh deleted the fix/expand-oneshot-overlay-toggle branch July 26, 2026 03:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant