https://kotlinlang.org logo
#compose
Title
# compose
p

Paul Woitaschek

10/01/2022, 8:58 AM
Does a function like this make sense? It’s quite often that I have the need to transform a suspend function to a state, so I wonder why there nothing like this built into the runtime 🤔
Copy code
@Composable
  private fun <T> suspendingGet(default: T, get: suspend () -> T): T {
    var value by remember { mutableStateOf(default) }
    LaunchedEffect(Unit) {
      value = get()
    }
    return value
  }
o

Oleksandr Balan

10/01/2022, 9:26 AM
Yeah, it is called
produceState
👍
Copy code
@Composable
fun <T> produceState(
    initialValue: T,
    @BuilderInference producer: suspend ProduceStateScope<T>.() -> Unit
): State<T> {
    val result = remember { mutableStateOf(initialValue) }
    LaunchedEffect(Unit) {
        ProduceStateScopeImpl(result, coroutineContext).producer()
    }
    return result
}
116 Views