Hatice Sarp
03/16/2021, 11:05 AMHatice Sarp
03/16/2021, 11:05 AMprivate fun progressObserver(state: (Float) -> Unit): androidx.lifecycle.Observer<List<WorkInfo>> {
return androidx.lifecycle.Observer { listOfWorkInfo ->
if (listOfWorkInfo.isNullOrEmpty()) {
return@Observer
}
listOfWorkInfo.forEach { workInfo ->
if (WorkInfo.State.RUNNING == workInfo.state) {
val progress = workInfo.progress.getInt(PROGRESS, 0)
state(progress.toFloat())
}
}
}
}
Hatice Sarp
03/16/2021, 11:05 AM@OptIn(ExperimentalFoundationApi::class)
@Composable
fun EditProfileComposableComponent(
modifier: Modifier,
) {
var progress = remember { mutableStateOf(0.1f) }
profileViewModel.progressWorkInfoItems.observe(lifecycleOwner, progressObserver(
state = { state -> progress.value = state }
))
LinearProgressIndicator(
progress = progress.value,
modifier = modifier.fillMaxWidth(1f),
backgroundColor = backgroundColor
)
...
}
Halil Ozercan
03/16/2021, 1:36 PMobserveAsState
Timo Drick
03/16/2021, 2:07 PMIan Lake
03/16/2021, 2:22 PMobserveAsState()
does all that for you. Just use thatHatice Sarp
03/16/2021, 2:36 PMval progressWorkInfo = profileViewModel.progressWorkInfoItems.observeAsState()
but I don't understand the thing how do I access the worker's progress values to give it to LinearProgressIndicator? @Ian LakeIan Lake
03/16/2021, 2:42 PMworkInfo.progress.getInt(PROGRESS, 0)