Mike Speed
08/04/2021, 3:27 PM...
val loading = binding.loading
loading.setContent {
LoadingSpinner()
}
...
@Preview
@Composable
fun LoadingSpinner() {
if (viewModel.loadingState.value) {
CircularProgressIndicator()
}
}
in my viewmodel:
_loadingState.value = true
viewModelScope.launch {
doSomeLongTask()
_loadingState.value = false //or calling this at some later point
}
LoadingSpinner() is updated correctly when value == true, but then when I set it to false, LoadingSpinner does not get updated and so stays on screen.
Any help appreciated!flosch
08/04/2021, 3:36 PMStateFlow.collectAsState
extension in your composable
@Preview
@Composable
fun LoadingSpinner() {
val loading = viewModel.loadingState.collectAsState()
if (loading) {
CircularProgressIndicator()
}
}
Zach Klippenstein (he/him) [MOD]
08/04/2021, 4:53 PMMike Speed
08/05/2021, 6:54 AMif (loading.value) {
instead 🙂flosch
08/05/2021, 6:56 AMval loading by viewModel.loadingState.collectAsState()
Then you do not need the .value
Mike Speed
08/05/2021, 7:04 AM