Jetpack Compose:如何收听滚动到末尾的列?

You*_*ail 8 android-jetpack-compose

我有一个包含多个视图元素的撰写列。我想检测用户何时垂直滚动列并到达其末尾。我们怎样才能做到这一点?

Phi*_*hov 9

在 Compose 中,您应该对状态更改做出反应,而不是寻找或创建侦听器。

为了防止冗余重组,在这种情况下derivedStateOf应该使用:只有当基于其他状态变量(例如 )的生成结果发生scrollState更改时,它才会触发重组:

val scrollState = rememberScrollState()
val endReached by remember {
    derivedStateOf {
        scrollState.value == scrollState.maxValue
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您在更改变量时需要执行一些副作用,例如请求更多数据,则可以根据副作用文档以不同方式在 Compose 中执行此操作。例如,使用LaunchedEffect

if (endReached) {
    LaunchedEffect(Unit) {
        // react on scroll end
    }
}
Run Code Online (Sandbox Code Playgroud)