작성
·
48
0
@Composable
fun CalendarPager(
viewModel: CalendarViewModel = viewModel(),
events: List<CalendarEventData>,
onDayClick: (LocalDate) -> Unit
) {
val today = LocalDate.now()
val pagerState = rememberPagerState(initialPage = 0)
// 현재 페이지에 따른 월 계산
val currentYearMonth by remember {
derivedStateOf {
YearMonth.now().plusMonths(pagerState.currentPage.toLong())
}
}
// checkedDays를 LiveData로 반영
val checkedDays by viewModel.checkedDays.observeAsState(emptySet())
// 페이지 수 설정 (예: 12개월)
val totalMonths = 12 // 예를 들어, 1년 동안의 페이지 수
Column(modifier = Modifier.fillMaxSize()) {
// 월과 연도 표시
MonthYearHeader(
currentYearMonth = currentYearMonth,
onMonthChange = { /* Do nothing, controlled by Pager */ }
)
Spacer(modifier = Modifier.height(16.dp))
// 슬라이드 가능한 페이지
HorizontalPager(
state = pagerState,
modifier = Modifier.weight(1f),
count = totalMonths
) { page ->
val yearMonth = YearMonth.now().plusMonths((page - pagerState.currentPage).toLong())
DayGrid(
yearMonth = yearMonth,
today = today,
checkedDays = checkedDays,
events = events,
onDayClick = { date -> onDayClick(date) },
onDayDoubleClick = { date -> viewModel.toggleCheckedDate(date) }
)
}
}
}
이 코드에서 rememberPagerState(initialPage = 0), count = totalMonths 부분에서 count랑 initialPage = 0
No value passed for parameter 'pageCount' 이런 문구가 뜨면서 오류가 나네요
implementation ("com.google.accompanist:accompanist-pager:0.30.1")
implementation ("com.google.accompanist:accompanist-pager-indicators:0.30.1")
이렇게 최신인데도 계속 뜨는데 어떻게 해결 해야 되나요..
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
신준희님께서 겪으신 문제는 rememberPagerState
함수에서 잘못된 사용으로 인한 것 같습니다. rememberPagerState
함수는 accompanist
라이브러리의 HorizontalPager
와 함께 사용하는 경우, pageCount
인자를 별도로 지정하지 않는 대신, HorizontalPager
의 count
속성을 사용해야 합니다. 그런데 사용하신 버전 또는 API가 변경되었을 수 있으니, 먼저 이 부분을 확인하시고 문제가 있을 시 아래 예시처럼 코드 수정이 필요할 수 있습니다:
val pagerState = rememberPagerState()
HorizontalPager(
count = totalMonths,
state = pagerState,
modifier = Modifier.weight(1f)
) { page ->
// ...
}
위와 같이 rememberPagerState
초기화 시 pageCount
를 넘기지 않고, HorizontalPager
의 count
속성으로 페이지 수를 지정하면 기본적으로 페이지 수에 맞게 상태가 업데이트됩니다.
또한, 사용 중인 accompanist-pager
버전에서 pageCount
라는 매개변수가 제거되었을 가능성이 있으니, 동봉된 공식 문서에서 변경된 API 사항을 확인해보시는 것도 추천드립니다.
문제가 해결되지 않거나 추가적인 오류가 발생할 경우, 사용 중이신 컴포저블이나 라이브러리의 버전을 더 확인하시고, 가능하면 최신 버전을 유지해주세요.
도움이 되셨기를 바랍니다!