在我正在开发的应用中,我无法将MutableState<Boolean>
从一个父可组合项传递到另一个子可组合项。我想要使用的原因MutableState
是这个变量将在子可组合项中发生更改。
这是我想要完成的一个简化示例:
@OptIn(UnstableApi::class)
@Composable
fun ParentComposable(
screenHeight: Dp,
barHeight: Dp,
) {
var scrollEnabled by remember { mutableStateOf(true) }
Column(
modifier = Modifier
.padding(top = barHeight)
.height(screenHeight - barHeight)
.fillMaxSize()
) {
UserButtons(
scrollEnabled = scrollEnabled // the error occurs here
)
}
}
@Composable
fun UserButtons(
scrollEnabled: MutableState<Boolean>
) {
IconButton(
onClick = {
scrollEnabled.value = false
println("Scroll has been deactivated")
}) {}
}
我收到的错误信息是:
类型不匹配:推断类型为布尔值,但预期为 MutableState
我猜测问题出在将scrollEnabled
(即MutableState<Boolean>
)传递给子可组合项时UserButtons
;由于某种原因,Boolean
即使它被声明为,它也会被检测为正常MutableState<Boolean>
。
我如何确保该参数被正确检测为MutableState
?