使用 Compose Coil 检测何时找不到图像
Detect when image not found using Compose Coil
我在 jetpack compose 中使用 coil 填充我的图像,我面临的问题是我无法以编程方式确定 url 是否不再有效。
val imageUrl = "www.someinvalidurl.com"
val painter = rememberImagePainter(
data = imageUrl
)
Image(
painter = painter
)
url 以前有效,但不再有效。 Coil 显示默认占位符 url,但我想识别此故障并尝试从不同的 url 获取图像。这个我试过了,
if (painter.state is ImagePainter.State.Error) {
//failed so try to get an image from a different url
}
但问题在于,即使 urls 有效,也会调用此块。
我正在使用以下版本的线圈:
implementation("io.coil-kt:coil-compose:1.4.0")
在使用 jetpack compose 时,是否有不同的正确方法来识别 coil 中的无效 URL
添加一个检查异常的侦听器。在此示例中,文件扩展名应为“jpg”,但我删除了“g”以测试图像不存在:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
startActivity(intent)
setContent {
val imageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jp"
val painter = rememberImagePainter(
data = imageUrl,
builder = {
this.listener(
onError = {request, ex ->
if ((ex as HttpException).response.code() == 400) {
// Image not found
}
}
)
}
)
Image(
painter = painter,
contentDescription = null
)
}
}
}
我在 jetpack compose 中使用 coil 填充我的图像,我面临的问题是我无法以编程方式确定 url 是否不再有效。
val imageUrl = "www.someinvalidurl.com"
val painter = rememberImagePainter(
data = imageUrl
)
Image(
painter = painter
)
url 以前有效,但不再有效。 Coil 显示默认占位符 url,但我想识别此故障并尝试从不同的 url 获取图像。这个我试过了,
if (painter.state is ImagePainter.State.Error) {
//failed so try to get an image from a different url
}
但问题在于,即使 urls 有效,也会调用此块。
我正在使用以下版本的线圈:
implementation("io.coil-kt:coil-compose:1.4.0")
在使用 jetpack compose 时,是否有不同的正确方法来识别 coil 中的无效 URL
添加一个检查异常的侦听器。在此示例中,文件扩展名应为“jpg”,但我删除了“g”以测试图像不存在:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
startActivity(intent)
setContent {
val imageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jp"
val painter = rememberImagePainter(
data = imageUrl,
builder = {
this.listener(
onError = {request, ex ->
if ((ex as HttpException).response.code() == 400) {
// Image not found
}
}
)
}
)
Image(
painter = painter,
contentDescription = null
)
}
}
}