在提升了我的isChecked变量之后,每当我单击它时,Switch似乎就不能工作了。
@Composable
fun PreferencesScreen(navController: NavController) {
var isChecked by rememberSaveable { mutableStateOf(false) }
Scaffold(
topBar = {...},
content = { LazyColumn(modifier = Modifier.padding(it).fillMaxSize()) {
item {
MyPreference(isChecked, "Test preference")
}
}
},
containerColor = MaterialTheme.colorScheme.background
)
}
@Composable
fun MyPreference(isChecked: Boolean, title: String) {
Row(
modifier = Modifier
.fillMaxWidth()
.toggleable(value = isChecked, onValueChange = { isChecked }),
) {
Text(text = title)
Switch(checked = isChecked, onCheckedChange = null)
}
}发布于 2022-06-21 18:31:18
Jetpack组合中状态提升的一般模式是用两个参数替换状态变量:
值: T:要显示的当前值
onValueChange:(T) -> Unit:请求更改值的事件,其中T是建议的新值
所以:
@Composable
fun MyPreference(isChecked: Boolean, title: String, onCheckedChange: (Boolean) -> Unit) {
Row(
modifier = Modifier
.fillMaxWidth()
.toggleable(value = isChecked, onValueChange = onCheckedChange),
) {
Text(text = title)
Switch(checked = isChecked, onCheckedChange = null)
}
}和:
//...
item {
MyPreference(isChecked, "Test preference", {isChecked = !isChecked})
}
//...https://stackoverflow.com/questions/72704967
复制相似问题