Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BugFix] OrbitPickerItem 초기화 및 재구성 시 상태 동기화 문제 #36

Closed
wants to merge 4 commits into from

Conversation

DongChyeon
Copy link
Member

Related issue 🛠

closed #35

어떤 변경사항이 있었나요?

  • 🐞 BugFix Something isn't working
  • 🎨 Design Markup & styling
  • 📃 Docs Documentation writing and editing (README.md, etc.)
  • [] ✨ Feature Feature
  • 🔨 Refactor Code refactoring
  • ⚙️ Setting Development environment setup
  • ✅ Test Test related (Junit, etc.)

CheckPoint ✅

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • PR 컨벤션에 맞게 작성했습니다. (필수)
  • merge할 브랜치의 위치를 확인해 주세요(main❌/develop⭕) (필수)
  • Approve된 PR은 assigner가 머지하고, 수정 요청이 온 경우 수정 후 다시 push를 합니다. (필수)
  • BugFix의 경우, 버그의 원인을 파악하였습니다. (선택)

Work Description ✏️

2025-01-14.6.46.16.mov

해당 2가지 문제가 있었습니다.

  1. LazyListState의 초기화 로직이 재구성 시 여러 번 실행되며, 예상치 못한 스크롤 동작을 유발.
  2. selectedItem 값이 재구성 이후에도 부모와 불일치하여 상태 꼬임 발생.

이를 해결하기 위해 다음 방안을 적용하였습니다.

  1. PickerState를 통해 LazyListState, startIndex, selectedItem을 묶어서 관리
  2. rememberPickerState를 활용하여 LazyListState와 startIndex의 초기화 로직이 Recomposition 시 여러 번 실행되지 않도록 제어

또한, onScrollCompleted()를 통해 PickerItem의 값들이 한바퀴 이상 순환할 경우 호출할 메소드를 넣을 수 있도록 하였습니다.

if ((previousAdjustedIndex == 0 && adjustedIndex == lastIndex) || 
    (previousAdjustedIndex == lastIndex && adjustedIndex == 0)) {
    onScrollCompleted()
}

해당 변경사항을 통해 hour이 한바퀴 이상 순환할 경우 AM/PM이 토글되도록 하였습니다.

Uncompleted Tasks 😅

N/A

To Reviewers 📢

행복해요

@DongChyeon DongChyeon closed this Jan 14, 2025
@DongChyeon DongChyeon deleted the bugfix#35-orbit-picker-item branch January 14, 2025 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BugFix] OrbitPickerItem 초기화 및 재구성 시 상태 동기화 문제
1 participant