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

Flutter中AssetImage加载默认图片失败,报FileSystemException错误求助

问题解决步骤

1. 排查数据库字段值异常

错误提示path = 'test',说明代码走到了FileImage分支,但该路径不存在。大概率是数据库中img字段并非null,而是存了无效字符串(比如'test'),导致listContacts[index].img != null判断为真,去加载不存在的文件。

解决:

  • 先打印listContacts[index].img的实际值,确认是否为null或有效路径。
  • 修改判断逻辑,同时检查字符串是否为空:
    image: listContacts[index].img?.trim().isNotEmpty == true
        ? FileImage(File(listContacts[index].img!))
        : const AssetImage('assets/imgs/img.png'),
    

2. 确认资源文件配置

使用AssetImage必须在pubspec.yaml中正确声明资源,否则Flutter找不到图片:

flutter:
  assets:
    - assets/imgs/img.png

注意缩进要和flutter:对齐,配置后重启项目生效。

3. 移除不必要的类型转换

AssetImage本身就是ImageProvider的子类,不需要强制转换as ImageProvider,直接使用即可,避免潜在类型错误。

4. 单独测试默认图片

先把代码临时改成只加载默认图,确认资源能正常显示:

image: const AssetImage('assets/imgs/img.png'),

如果能显示,再整合分支逻辑,逐步排查问题。

修正后的完整代码示例

Widget cardContacts(BuildContext context, int index) {
  return GestureDetector(
    child: Padding(
      padding: const EdgeInsets.all(10),
      child: Row(
        children: <Widget>[
          Container(
            height: 80,
            width: 80,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              image: DecorationImage(
                image: listContacts[index].img?.trim().isNotEmpty == true
                    ? FileImage(File(listContacts[index].img!))
                    : const AssetImage('assets/imgs/img.png'),
                fit: BoxFit.cover,
              ),
            ),
          ),
          const SizedBox(width: 10), // 用SizedBox替代空Padding更规范
          Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Text(listContacts[index].name!),
              Text(listContacts[index].email!),
              Text(listContacts[index].phone!),
            ],
          )
        ],
      ),
    ),
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:45:38