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)
}
有什么想法吗?谢谢!
以
gs://
开头的 URL 是 Google Cloud Storage 的本机 URL 格式,许多常见库无法识别 - Coil 显然就是其中之一。
要显示数据,您有两种选择:
https://
开头的公开可读 URL,并将其传递给 Coil。我有一个类似的问题,正如“Frank van Puffelen”的答案所描述的,通过将完整的 URL 添加到 RememberAsyncImagePainter 来解决,如下所示:
Image(
painter = rememberAsyncImagePainter(
model = "https://your_url/$imageUrl"
),
contentDescription = null
)