【发布时间】:2021-07-08 00:11:16
【问题描述】:
在 Jetpack Compose 中,我可以使用状态提升并将 state / setState 向下传递到层次结构中的多个可组合项(使用不同的包)吗?
我有以下问题:
@Composable
fun JetpackComposeApp() {
var theme by rememberSaveable {
mutableStateOf(ThemeState(isDarkTheme = isDarkTheme))
}
...
NavHost(...) {
composable(route = MainNavRoutes.Settings) {
SettingsScreen(hiltViewModel(it), theme) { newTheme ->
theme = newTheme
}
}
}
}
以上工作。 SettingsScreen 正确更新整个主题。
但是,如果我将 Navhost 重构为带有参数(主题、setTheme)的不同包,setter 可以工作,但 SettingsScreen 没有得到更新的主题。主题永远是旧的。
状态提升是否仅限于某些东西?喜欢包/可组合优化? 或者我在这里遗漏了什么?
以上可以在repo中找到:link,文件:MainActivity,SettingsScreen。
【问题讨论】:
标签: android android-jetpack-compose