Катушка: загрузка изображения из firebase не работает - невозможно получить данные. Сборщик не поддерживает

       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)
}

Есть идеи? Спасибо!

2 ответа

URL-адреса, начинающиеся сgs://являются собственным форматом URL-адресов Google Cloud Storage и не распознаются многими распространенными библиотеками, одной из которых, по-видимому, является Coil.

Для отображения данных у вас есть два варианта:

У меня была похожая проблема, и, как описал ответ «Франка ван Пуффелена», она была решена путем добавления полного URL-адреса в RememberAsyncImagePainter, например:

      Image(
      painter = rememberAsyncImagePainter(
          model = "https://your_url/$imageUrl"
      ),
      contentDescription = null
     )
Другие вопросы по тегам