问题:
可以选择图片、但是只更新一次
可能的原因:
1.Compose没检测到图像uri变化
使用了livedata和stateflow都没有变化
2.数据传递:
如果传入的是不同的头像 URI,而不是同一个 URI。如果每次传入的 URI 都是相同的,那么头像路径也会相同,导致头像没有更新。
打了Log
有变化
最终我发现的问题:
fun saveImageToInternalStorage(context: Context, bitMap: Bitmap): String {
val fileName = "avatar.jpg"
val file = File(context.filesDir, fileName)
FileOutputStream(file).use {
bitMap.compress(Bitmap.CompressFormat.JPEG, 100, it)
}
return file.absolutePath
}
我保存的头像名和路径每次都是一致的,
所以其实头像每次都更新了,但是头像路径名没变过,compose检测字符串是否变化以字符值为准,所以没有触发compose更新
解决方法:自定义图像路径类型
加上时间戳
data class ImagePath(
val path: String,
val timestamp: Long // 可以添加额外的信息,例如时间戳
)
这样子compose就可以检测到改变了