首页 > 解决方案 > 当 Jetpack Compose 中变量的 MutableState 发生变化时,有没有办法执行函数调用

问题描述

我创建了一个名为 的变量currentlySelectedJobId,这允许我在用户在我的代码中的其他位置选择它时捕获作业 ID。

发生这种情况时,我想将我LazyRow的项目滚动到该对象。


LazyRow(state = scrollState) {
items(....
......
}

但是,我正在努力寻找一种捕捉变化currentlySelectedJobId并执行动作的方法scrollState.animateScrollToItem(index = 0)

有没有办法做到这一点 ?

标签: androidandroid-jetpack-compose

解决方案


尝试这个

@Composable
fun List(
currentlySelectedJobId: Int, //Pass a 'delegated' MutableStateValue here
state: //... The last scroll state
){
 LaunchedEffect(currentlySelectedJobId){
  state.animateScrollToItem(currentlySelectedJobId)
 }
}

LaunchedEffect这里用于在每个合成或键更改时仅触发一次功能。我将键作为作业 id 传递(假设它与索引相同),然后动画到该值。

您可以阅读有关 LaunchedEffect 和其他副作用的更多信息


推荐阅读