読み込み待ち、SwipeRefresh などで見かけるやつ。
ボタン2度押し対策にも使えます。
// @Composable
val sending by viewModel.sending
Button(
onClick = {
viewModel.send()
},
enabled = !sending
) {
Text("SEND")
}
// ViewModel
private val _sending = mutableStateOf(false)
val sending: State<Boolean> = _sending // *
fun send() {
viewModelScope.launch(Dispatchers.IO) {
_sending.value = true
delay(5000) // heavy
_sending.value = false
}
}

ViewModel から露出している sending は State<Boolean> として @Composable 側からの書き換えは許しません。
👉 【Jetpack Compose】rememberCoroutineScope() vs LaunchedEffect





![ERROR: XMLRPC request failed [code: -32500] RuntimeError: PyPI's XMLRPC API is currently disabled due to unmanageable load and will be deprecated in the near future.](https://i0.wp.com/android.benigumo.com/wp-content/uploads/2022/05/d4106baab59fe6713374ce5ec1c7f81b.png?ssl=1)