伴奏寻呼机 animateScrollToPage 无法正确滚动到下一页

J. *_*Doe 4 android android-jetpack-compose jetpack-compose-accompanist

使用accompanist-pagerversion 0.25.1animateScrollToPage()似乎并没有一路滚动以使下一页完全可见,上一页仍然显示。不过,非动画版本scrollToPage()似乎运行良好。我是否缺少一些额外的参数?

@ExperimentalPagerApi
@Composable
fun MyPager() {
    val pagerState = rememberPagerState()
    HorizontalPager(
        count = 10,
        state = pagerState
    ) { pagerIndex ->
        Box(
            modifier = Modifier
                .fillMaxWidth()
                .height(150.dp)
                .background(if (pagerIndex.mod(2) == 0) Color.Cyan else Color.Red)
        )
    }
    with(pagerState) {
        LaunchedEffect(key1 = currentPage) {
            launch {
                delay(10000)
                animateScrollToPage(
                    page = (currentPage + 1).mod(pageCount)
                )
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

截屏

小智 11

问题是 pagerState 在动画结束之前更新。要解决此问题,请提供另一个密钥

var key by remember { mutableStateOf(flase) }

LaunchedEffect(key1 = key) {
    launch {
        delay(2000)
        with(pagerState) {
            val target = if (currentPage < pageCount - 1) currentPage + 1 else 0
            animateScrollToPage(page = target) //Broken
            key = !key
        }
    }
}
Run Code Online (Sandbox Code Playgroud)