属性 委托必须有一个 'getValue(Nothing?, KProperty*>)' 方法
Property delegate must have a 'getValue(Nothing?, KProperty*>)' method
我正在尝试根据用户的选择来设置我的应用程序的主题。可以是深色主题,也可以是浅色主题。
我将 viewModel 创建为:
class ThemeViewModel(application: Application) : AndroidViewModel(application) {
private val _darkMode = MutableLiveData<Boolean>(true)
val darkMode : LiveData<Boolean>
get() = _darkMode
fun setDarkMode(isDarkMode:Boolean){
_darkMode.value = isDarkMode
}
fun getDarkMode():Boolean = _darkMode.value!!
}
我将主题创建为:
@Composable
fun VoodleeTheme(
darkTheme: Boolean,
content: @Composable () -> Unit
) {
MaterialTheme(
colors = if (darkTheme) DarkColors else LightColors,
content = content
)
}
我将 setContent 用作:
setContent {
MyApp {
val doDark: Boolean by
themeViewModel.darkMode.observeAsState(Boolean) //this line gives error
VoodleeTheme(darkTheme = doDark) {
ProgressNavigation(themeViewModel)
}
}
}
请帮助我解决这个问题。
添加,
import androidx.compose.runtime.getValue
这是 MutableState<T>
的扩展函数,实现了在 val
中使用 by
的要求。
使用以下方法解决:
val doDark: State<Boolean> = themeViewModel.darkMode.observeAsState(initial = false)
代替:
val doDark: Boolean by themeViewModel.darkMode.observeAsState(Boolean)
我正在尝试根据用户的选择来设置我的应用程序的主题。可以是深色主题,也可以是浅色主题。
我将 viewModel 创建为:
class ThemeViewModel(application: Application) : AndroidViewModel(application) {
private val _darkMode = MutableLiveData<Boolean>(true)
val darkMode : LiveData<Boolean>
get() = _darkMode
fun setDarkMode(isDarkMode:Boolean){
_darkMode.value = isDarkMode
}
fun getDarkMode():Boolean = _darkMode.value!!
}
我将主题创建为:
@Composable
fun VoodleeTheme(
darkTheme: Boolean,
content: @Composable () -> Unit
) {
MaterialTheme(
colors = if (darkTheme) DarkColors else LightColors,
content = content
)
}
我将 setContent 用作:
setContent {
MyApp {
val doDark: Boolean by
themeViewModel.darkMode.observeAsState(Boolean) //this line gives error
VoodleeTheme(darkTheme = doDark) {
ProgressNavigation(themeViewModel)
}
}
}
请帮助我解决这个问题。
添加,
import androidx.compose.runtime.getValue
这是 MutableState<T>
的扩展函数,实现了在 val
中使用 by
的要求。
使用以下方法解决:
val doDark: State<Boolean> = themeViewModel.darkMode.observeAsState(initial = false)
代替:
val doDark: Boolean by themeViewModel.darkMode.observeAsState(Boolean)