在 Beta02 中随后单击 Jetpack Compose Checkbox 时无法再次更改 MutableState 变量,但在 Beta01 上有效
MutableState variable cannot be changed again on the subsequent click of Jetpack Compose Checkbox in Beta02, but works on Beta01
我有一个简单的 Jetpack Compose 复选框(根据 Android Studio Preview Canary 11 的 Compose Template Sample design 稍作修改),当它选中时,它将从 false 切换为 true,反之亦然...
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val darkMode = remember { mutableStateOf(false) }
ExperimentTheme(darkMode.value) {
// A surface container using the 'background' color from the theme
Surface(modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background) {
DarkModeCheckBox(darkMode)
}
}
}
}
}
@Composable
fun DarkModeCheckBox(darkMode: MutableState<Boolean>) {
Row {
Checkbox(
checked = darkMode.value,
onCheckedChange = { checked -> darkMode.value = checked },
)
}
}
切换时,它会将颜色模式从 LightMode 更改为 DarkMode,反之亦然,如下面的 GIF 所示。
这适用于
compose_version = '1.0.0-beta01'
// and
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"
但是当我把它移到
compose_version = '1.0.0-beta02'
// and
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
只能从false 切换为true 一次。然后该值卡住并且不会随着随后的单击而改变。是因为在 1.0.0-beta02
中改变可变状态的行为现在不同了吗?如果已经改变,我应该如何解决以上问题?
此代码适用于 1.0.0-beta03
。
beta02 中的 MaterialTheme 存在错误 fixed in beta03。
我有一个简单的 Jetpack Compose 复选框(根据 Android Studio Preview Canary 11 的 Compose Template Sample design 稍作修改),当它选中时,它将从 false 切换为 true,反之亦然...
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val darkMode = remember { mutableStateOf(false) }
ExperimentTheme(darkMode.value) {
// A surface container using the 'background' color from the theme
Surface(modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background) {
DarkModeCheckBox(darkMode)
}
}
}
}
}
@Composable
fun DarkModeCheckBox(darkMode: MutableState<Boolean>) {
Row {
Checkbox(
checked = darkMode.value,
onCheckedChange = { checked -> darkMode.value = checked },
)
}
}
切换时,它会将颜色模式从 LightMode 更改为 DarkMode,反之亦然,如下面的 GIF 所示。
这适用于
compose_version = '1.0.0-beta01'
// and
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30"
但是当我把它移到
compose_version = '1.0.0-beta02'
// and
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
只能从false 切换为true 一次。然后该值卡住并且不会随着随后的单击而改变。是因为在 1.0.0-beta02
中改变可变状态的行为现在不同了吗?如果已经改变,我应该如何解决以上问题?
此代码适用于 1.0.0-beta03
。
beta02 中的 MaterialTheme 存在错误 fixed in beta03。