I'm trying to set theme of my app according to what the user chooses. It can be dark theme or light theme.
I have created viewModel as:
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!!
}
I have created my theme as :
@Composable
fun VoodleeTheme(
darkTheme: Boolean,
content: @Composable () -> Unit
) {
MaterialTheme(
colors = if (darkTheme) DarkColors else LightColors,
content = content
)
}
I used setContent as :
setContent {
MyApp {
val doDark: Boolean by
themeViewModel.darkMode.observeAsState(Boolean) //this line gives error
VoodleeTheme(darkTheme = doDark) {
ProgressNavigation(themeViewModel)
}
}
}
Please help m fix this.
Solved it by using:
val doDark: State<Boolean> = themeViewModel.darkMode.observeAsState(initial = false)
In place of:
val doDark: Boolean by themeViewModel.darkMode.observeAsState(Boolean)