【问题标题】:Downloaded photos from Firebase Cloud Storage flickers on Android Jetpack Compose从 Firebase 云存储下载的照片在 Android Jetpack Compose 上闪烁
【发布时间】:2022-11-15 21:08:19
【问题描述】:

我正在使用 Kotlin 开发一个 Android 应用程序。我需要在屏幕上显示来自 Cloud Storage 的图片。现在,图片显示,但他们闪烁。我找不到用 Kotlin 编写的信息,我也不知道为什么会这样。 这是我当前的代码。

@Composable
fun UserInfo(navController: NavController, name: String, uid: String) {
    val storage = Firebase.storage
    val userRef = storage
        .reference
        .child("users/${uid}/photos")
        .child(name)
    var bitmap by remember { mutableStateOf<Bitmap?>(null) }
    val ONE_MEGABYTE: Long = 1024 * 1024
    userRef.getBytes(ONE_MEGABYTE).addOnSuccessListener {
        bitmap = BitmapFactory.decodeByteArray(it, 0, it.size)
    }
    ...

            if (userRef != null) {
                Image(
                    painter = rememberImagePainter(bitmap),
                    contentScale = ContentScale.FillBounds,
                    contentDescription = null,
                    modifier = Modifier
                        .width(100.dp)
                        .height(100.dp)
                        .clip(CircleShape)
                )
            ...

有人可以帮助我吗?谢谢你。

【问题讨论】:

    标签: android firebase kotlin firebase-storage android-jetpack-compose


    【解决方案1】:

    不确定这是否有帮助,但我怀疑这些是导致问题的部分,

    var bitmap by remember { mutableStateOf<Bitmap?>(null) } // <-- this
    
    userRef.getBytes(ONE_MEGABYTE).addOnSuccessListener {
        bitmap = BitmapFactory.decodeByteArray(it, 0, it.size) // <-- and this
    }
    

    这将导致两个甚至更多的重新组合(据我了解您的代码)。有什么办法可以将它提升到UserInfo 上方?

    我的意思是你能在没有这些代码的情况下让你的UserInfo 工作吗?

    val storage = Firebase.storage
    val userRef = storage
        .reference
        .child("users/${uid}/photos")
        .child(name)
    var bitmap by remember { mutableStateOf<Bitmap?>(null) }
    val ONE_MEGABYTE: Long = 1024 * 1024
    userRef.getBytes(ONE_MEGABYTE).addOnSuccessListener {
        bitmap = BitmapFactory.decodeByteArray(it, 0, it.size)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 2018-02-14
      • 2016-09-29
      相关资源
      最近更新 更多