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

Flutter加载API返回图片报URI无主机错误的解决方法

问题原因

接口返回的image字段是服务端存储的相对路径,并非带协议头、域名的完整可访问网络URL。直接传入Image.network时,Flutter识别不到合法的HTTP/HTTPS网络URI,会默认按本地file协议解析路径,最终抛出「No host specified in URI」的异常。

修复步骤
  • 提前配置项目对应的图片资源访问根域名(例:https://static.你的项目域名.com/,替换为自身项目实际的资源服务地址即可,建议放在全局配置中统一维护)
  • 将接口返回的相对路径和根域名拼接为完整的网络图片URL,再传入Image.network加载
  • 增加加载失败兜底逻辑,避免图片地址失效时出现红屏报错
修复后代码示例

首先定义全局图片根地址常量:

// 全局图片资源根地址,替换为项目实际值
const String IMAGE_BASE_URL = "https://替换为你项目的图片服务域名/";

修改ListTile的leading加载逻辑:

ListTile(
  leading: SizedBox(
    height: 50,
    width: 50,
    child: Image.network(
      // 拼接得到完整图片访问地址
      "$IMAGE_BASE_URL${emergencyContact[index].image}",
      fit: BoxFit.cover,
      // 加载失败显示默认占位
      errorBuilder: (context, error, stackTrace) {
        return Container(
          color: Colors.grey[200],
          child: const Icon(Icons.person, size: 30, color: Colors.grey),
        );
      },
    ),
  ),
  // 其余ListTile原有属性保持不变
)
注意事项
  • 拼接地址时留意斜杠重复问题:如果根域名末尾带/,需确认接口返回的相对路径开头没有多余的/,避免生成格式错误的图片地址
  • 若接口可能返回空的图片字段,需在拼接前做非空判断,空值直接展示默认占位图即可,避免空指针报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:27:38