在我的视图模型中,我具有:

var uri = savedStateHandle.getStateFlow("uri", Uri.EMPTY)
    private set

在我看来:

val uri by viewModel.uri.collectAsState()

                Image(
                    painter = rememberAsyncImagePainter(
                        ImageRequest
                            .Builder(LocalContext.current)
                            .data(data = uri)
                            .build()
                    ),
                    contentDescription = "",
                    modifier = Modifier
                        .padding(vertical = 16.dp)
                        .size(avatarSize.value)
                        .clip(CircleShape)
                        ,
                    contentScale = ContentScale.Crop
                )

当我保存新的图像时,它是用相同的URI保存在本地的,所以我的图像不会被重组,而是呈现旧的图像. 我可以更改URI,然后图像按预期重新组合,但如何通知我的图像即使在URI仍然相同的情况下也应该重新组合?

推荐答案

您可以在构建器上使用COIL的setParameter方法,该方法将在参数更改时重新加载.您可以使用上次更改的时间戳作为参数或类似的参数.

val timestamp by viewModel.timestamp.collectAsState()

ImageRequest
    .Builder(LocalContext.current)
    .data(data = uri)
    .setParameter("timestamp", timestamp, null)
    .build()

Android相关问答推荐

如何解决Android Studio中的in fragment问题

在模块中找到重复的类com.google.Firebase.auth.ktx.AuthKt||Android Studio

如何将两个变量传递给Nav主机,然后将其传递给另一个屏幕?

如何从sqlite数据库中检索数据到碎片android?

如何在初始合成期间在可组合函数中调用/获取远程API中的数据[防止无限重组]

Play store 的 Play 完整性与 Firebase 应用判断 Play 完整性

使用 List 和 LazyColumn 重新组合所有项目

如何删除房间数据库?

未找到 com.android.tools.build:gradle:7.4.0 的匹配变体

AirDroid Business 如何能够从屏幕截图中排除覆盖?

如何正确地将图像上传到 Jetpack Compose 中的 LazyList 中的项目?

如何在 Jetpack Compose 中设置行宽等于 TextField 的宽度?

Hilt 依赖注入重复绑定错误

如何在 Dolphin 中启用 android studio new logcat | 2021.3.1 金丝雀 6?

为什么官方文档用大写字母表示val变量?

更改 Android SDK 版本 33 后建议在 xml 布局文件中不起作用

线圈单元测试 - 如何做到这一点?

自定义布局忽略可组合的大小

OpenGLES,为什么 glReadPixels() 不能从 FBO 的 Renderbuffer 的 colored颜色 缓冲区中读取数据?

Android 模拟器没有响应 Xamarin 的 AMD 进程的问题