我想在每次设置某个状态后两秒后执行一些操作.

Code inside viewModel:

var isLoading = mutableStateOf(LoadingState.NONE)
    set(value) {
        Timber.d("Custom Setter") //Not Firing

        //Do something when the state is set to success.
        if(value.value == LoadingState.SUCCESS){
            viewModelScope.launch {
                delay(2000L)
                dispatchEvent(//some event)
            }
        }
        field = value
    }

Set{}块根本没有运行.但这个值正在被正确设置.

使用带有关键字by的委托时,

Delegated property cannot have accessors with non-default implementations

有没有一种方法可以让定制setter在Jetpack Compose中对muableStateOf()起作用?

推荐答案

我想这个用例你可以用snapshotFlow英镑.它从给定的乐曲State创建Flow.

var isLoading by mutableStateOf(LoadingState.NONE)
    private set

init {
    viewModelScope.launch {
        snapshotFlow { isLoading }
            .collect { 
                if(it == LoadingState.SUCCESS) {
                    delay(2000L)
                    dispatchEvent(//some event)
                }
            }
    }
}

Android相关问答推荐

AdMob:MobileAds. initialize()—java. lang. xml对于某些设备不能强制转换为java. lang. String""

Kotlin Gzip字符串未按预期工作

房间DB:UPSERT返回什么?

list 合并失败,AGP 8.3.0

无法在Jetpack Compose中显示Admob原生广告

如何使可拖动内容停留在可组合框的边界内

Android可绘制边框删除底线

Android 导航 - 定义参数

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

PayUCheckoutPro Android SDK 实现问题

Jetpack Compose 中的滑动按钮菜单

LazyColumn 单选中的状态提升. Jetpack compose

Compose `Icons.Outlined.Star` 没有概述

使用 Jetpack Compose 时,如何以简单的方式在 Color.kt 中定义 colored颜色 ?

优化 Room 数据库迁移

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

这是 let 函数的正确用法吗?

IconButton 中可绘制的图标是黑色的,尽管它是白色的

当我更改 ViewModel var 时,Kotlin + Compose 中的 Composable 不会更新

Android Studio,Db 连接错误:发生异常情况导致驱动程序失败.请报告此异常