Return an observable [snapshot][androidx.
ProduceState
@Composable
fun ProduceState(viewModel: ProduceStateSampleViewModel) {
val uiState by
produceState<UiState<List<Person>>>(UiState.Loading, viewModel) {
viewModel.people.map { UiState.Data(it) }.collect { value = it }
}
when (val state = uiState) {
is UiState.Loading -> Text("Loading...")
is UiState.Data ->
Column {
for (person in state.data) {
Text("Hello, ${person.name}")
}
}
}
}
ProduceStateAwaitDispose
@Suppress("UNUSED_VARIABLE")
@Composable
fun ProduceStateAwaitDispose(viewModel: ProduceStateSampleViewModel) {
val currentPerson by
produceState<Person?>(null, viewModel) {
val disposable = viewModel.registerPersonObserver { person -> value = person }
awaitDispose { disposable.dispose() }
}
}