Brett Best
09/10/2020, 3:36 AMBrett Best
09/10/2020, 3:37 AM@Composable
fun LegalBodyContent(contentPadding: InnerPadding = InnerPadding(), onLegal: () -> Unit) {
val loader = remember { LegalLoader() }
val networkService = ActiveAppContainer.current.networkService
launchInComposition {
loader.load(networkService)
}
Crossfade(current = loader.state) { loaderState ->
when (loaderState) {
is LegalLoader.State.Loading -> LegalBodyContentLoading()
is LegalLoader.State.Loaded -> LegalBodyContentLoaded(loaderState)
is LegalLoader.State.Error -> LegalBodyContentError(loaderState)
}
Button(onClick = {
// How to call loader.load() in here?
}) {
Text("Refresh")
}
}
}
This is how I’ve currently configured my composableAdam Powell
09/10/2020, 3:47 AMrememberCoroutineScope
to get a scope in composition and launch into it in your click handlerBrett Best
09/10/2020, 3:56 AMval scope = rememberCoroutineScope()
launchInComposition(scope) {
loader.load(networkService)
}
and then in the onClick:
scope.async { loader.load(networkService) }
Gives me Deferred result is never used
Zach Klippenstein (he/him) [MOD]
09/10/2020, 4:52 PMlaunch
, not async
.