提问人:Jorpy 提问时间:6/13/2023 更新时间:6/13/2023 访问量:534
如何在 jetpack compose 中从另一个可组合项访问状态?
How to access state from another composable in jetpack compose?
问:
如何在 jetpack compose 中从另一个可组合项访问状态?想要从另一个可组合项访问状态。
@Composable
fun MySwitch() {
val checkedState = remember { mutableStateOf(true) }
Switch(
checked = checkedState.value,
onCheckedChange = { checkedState.value = it }
)
}
@Composable
fun MyUi() {
MySwitch()
Text(
text = if(checkedState) "foo" else "bar",
)
}
答:
1赞
Ayman Ait
6/13/2023
#1
这实际上取决于你的情况,我可以给你 3 种方法:
如果您只有一个开关和一个文本:
[kotlin]
@Composable
fun MySwitch(checkedState: MutableState<Boolean>) {
Switch(
checked = checkedState.value,
onCheckedChange = { checkedState.value = it }
)
}
@Composable
fun MyUi() {
val checkedState = remember { mutableStateOf(true) }
MySwitch(checkedState = checkedState)
Text(
text = if(checkedState.value) "foo" else "bar",
)
}
如果您有多个开关和与之关联的文本:
@Composable
fun MySwitch() {
val checkedState = remember { mutableStateOf(true) }
Switch(
checked = checkedState.value,
onCheckedChange = { checkedState.value = it }
)
Text(
text = if(checkedState.value) "foo" else "bar",
)
}
@Composable
fun MyUi() {
MySwitch()
MySwitch()
MySwitch()
}
如果你知道MVVM,并且需要在你的逻辑中检查这一点,例如,你有一个待办事项的数据库,那么你的viewModel逻辑中就有这个状态(可能是StateFlow)
评论