読み込み待ち、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
👉 【MVVM】 ViewModel の_プロパティ記述
👉 StateFlow の View への公開
👉 Jetpack Compose 二度押しを避けるボタン | Zenn
関連ワード: Android・AndroidStudio・Google・JetBrains・JetpackCompose・Kotlin・おすすめ・初心者・開発