线圈:从 firebase 加载图像不起作用 - 无法获取数据。不支持 fetcher

问题描述 投票:0回答:2
 Image(
        modifier = Modifier.size(100.dp).padding(16.dp),
        painter = rememberImagePainter(
            ImageRequest.Builder(LocalContext.current)
 //                    .data("https://media-cldnry.s-nbcnews.com/image/upload/t_fit-760w,f_auto,q_auto:best/streams/2013/March/130326/1C6639340-google-logo.jpg")
                .data(Firebase.storage.getReference("<Redacted>"))
                .crossfade(false)
                .listener(object : ImageRequest.Listener {

                    override fun onError(request: ImageRequest, throwable: Throwable) {
                        super.onError(request, throwable)
                        Log.e("CoilRequest", "${throwable.message}")
                    }
                })
                .placeholder(getShimmerPlaceholder())
                .build()
        ),
        contentDescription = "description",
        contentScale = ContentScale.Fit
    )

当我使用来自网络的一些随机

image
时,注释代码可以正常工作,但是当我使用 firebase 中的托管图像时,它无法在
compose
上工作,并且我有一个来自线圈的
error
回调

Unable to fetch data. No fetcher supports: gs://

view
中使用了相同的方法,但它有效。

inline fun ImageView.load(data: data: StorageReference, builder: ImageRequest.Builder.() -> Unit) : Disposable {
    val loadRequest = ImageRequest.Builder(context)
                      .data(data)
                      .target(this@load)
                      .apply(builder).build()
          return FireCoil.loader(context).enqueue(loadRequest)
}

有什么想法吗?谢谢!

android firebase-storage android-jetpack-compose coil android-compose-image
2个回答
7
投票

gs://
开头的 URL 是 Google Cloud Storage 的本机 URL 格式,许多常见库无法识别 - Coil 显然就是其中之一。

要显示数据,您有两种选择:


0
投票

我有一个类似的问题,正如“Frank van Puffelen”的答案所描述的,通过将完整的 URL 添加到 RememberAsyncImagePainter 来解决,如下所示:

Image(
      painter = rememberAsyncImagePainter(
          model = "https://your_url/$imageUrl"
      ),
      contentDescription = null
     )
© www.soinside.com 2019 - 2024. All rights reserved.