Flutter AssetImage相对路径加载图片失败 绝对路径正常
问题原因
Flutter的AssetImage不会直接读取项目目录下的物理文件,所有需要通过Asset方式加载的本地资源,必须提前在项目根目录的pubspec.yaml中显式注册,没有注册的资源不会被打包进应用的资源包,运行时自然会抛出找不到资源的错误。
你用本地电脑的绝对路径能加载成功,是因为调试阶段Flutter可以直接读取你开发机上的磁盘文件,但这种写法完全不可用——等应用打包安装到手机、其他设备上时,你电脑上的本地路径在其他设备上根本不存在,图片依然会加载失败。
修复步骤
- 打开项目根目录下的
pubspec.yaml配置文件,找到flutter对应的配置块,YAML格式对缩进要求极其严格,配置时不要随意增减空格。 - 在
flutter节点下添加资源声明,和已有uses-material-design: true配置保持同级缩进,示例配置如下:
flutter: uses-material-design: true # 新增本地资源声明 assets: - images/diamond.png
如果需要加载images文件夹下的所有图片,可以不用逐个写文件名,直接配置- images/即可。
- 配置保存后,在终端执行
flutter pub get命令同步配置,全量重启应用(不要用Hot Reload,热重载不会刷新资源配置表),此时原有代码里的AssetImage('images/diamond.png')就可以正常加载图片了。
常见踩坑提醒
- 配置资源路径时注意大小写和实际文件夹、文件名完全一致,路径写错也会触发资源找不到的错误。
- 不要在代码里硬编码本地绝对路径加载资源,这种写法在生产环境完全无效。
内容的提问来源于stack exchange,提问作者Miguel Linera
相关产品推荐
相关产品推荐

