You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

rememberAsyncImagePainter无法加载图片求助(Coil 3.0.4)

解决Coil 3.0.4无法加载网络图片的问题

问题原因

Coil 3.x版本将网络图片加载模块从核心库中拆分,默认依赖仅包含本地资源、Drawable等加载能力,缺少处理HTTP/HTTPS链接的fetcher,因此出现Unable to create a fetcher that supports错误。

解决步骤

1. 添加网络加载依赖

在模块级build.gradle.kts(或build.gradle)中补充网络模块依赖:

  • 推荐使用OkHttp网络模块(功能更完善,支持缓存、拦截器等):
implementation("io.coil-kt:coil-network-okhttp:3.0.4")
  • 若无需OkHttp,可使用基础网络模块:
implementation("io.coil-kt:coil-network:3.0.4")

2. 配置ImageLoader(可选但更稳妥)

在应用初始化时配置ImageLoader,并通过CompositionLocal提供给Compose全局使用:

// Application类中初始化
class YourApp : Application() {
    override fun onCreate() {
        super.onCreate()
        val imageLoader = ImageLoader.Builder(this)
            .components {
                // 注册OkHttpFetcher,使用coil-network-okhttp时需要
                add(OkHttpFetcher.Factory())
            }
            .build()
        // 用单例存储ImageLoader
        ImageLoaderHolder.imageLoader = imageLoader
    }
}

// 单例类
object ImageLoaderHolder {
    lateinit var imageLoader: ImageLoader
}

// 在Compose入口处提供
CompositionLocalProvider(LocalImageLoader provides ImageLoaderHolder.imageLoader) {
    NewConversationsScreen(state = ...)
}

3. 优化图片加载代码(可选)

替换rememberAsyncImagePainter为Compose专用的AsyncImage组件,内置错误、占位等处理逻辑,代码更简洁:

// 替换原Row中的Box和Image部分
AsyncImage(
    model = user.photo ?: "https://plus.unsplash.com/premium_photo-1683865776032-07bf70b0add1?q=80&w=1932&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
    contentDescription = "Profile Photo",
    modifier = Modifier
        .size(40.dp)
        .clip(RoundedCornerShape(32.dp))
        .border(1.dp, Color.Black, RoundedCornerShape(32.dp)),
    // 可选:添加本地默认错误图和加载占位图
    error = painterResource(R.drawable.default_profile),
    placeholder = painterResource(R.drawable.loading_placeholder)
)

内容的提问来源于stack exchange,提问作者Prakhar_Pathak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 09:07:36