我在 Jetpack compose 中实现了无限滚动的 HorizontalPager。最初它工作正常,但最近当我滚动寻呼机时,我收到 (java.lang.IllegalArgumentException: Cannot coerce value to anempty range: Maximum -1564.0 is less thanminimum 0.0) 错误。我其实不知道这是什么时候发生的。
示例代码
val listSize = exploreList.size
val pageCount = Int.MAX_VALUE
val maxRounds = pageCount / listSize
val initialPage = (maxRounds / 2) * listSize
val pagerState =
rememberPagerState(initialPage = initialPage, pageCount = { pageCount })
HorizontalPager(
state = pagerState,
modifier = Modifier.fillMaxWidth(),
contentPadding = PaddingValues(horizontal = 54.dp),
) {
val page = it % exploreList.size
val id = exploreList.getOrNull(page)?.id ?: 0
val posterPath = exploreList.getOrNull(page)?.posterPath
ExploreListItem(
posterPath = posterPath,
modifier =
Modifier
.fillMaxWidth()
.aspectRatio(4F / 5F)
.carousalTransition(it, pagerState),
onClick = { navigateToMovieDetails(id) },
)
}
撰写BOM版本:
2023.10.01
Kotlin 版本:
1.9.21
现在我将 Int.MAX_VALUE 替换为常量值,例如:
val pageCount = 1000
。这里没问题。
如何解决这个问题?
仅供参考,这似乎是 compose 基础库测试版中的一个错误。请参阅此处的相关问题:
https://issuetracker.google.com/issues/311414925
话虽如此,尝试在 1.6.x 版本中进行无限分页时,您仍然可能会遇到另一个问题: