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

flutter_svg ^1.0.3加载SVG文件抛出无法加载资源异常排查

问题产生原因
  • 资源路径配置不完整:Flutter的asset声明不会递归扫描子目录,你在pubspec.yaml里只声明了assets/icons/根目录,但目标图标存放在assets/icons/task/子目录下,打包时子目录内的文件不会被纳入资源索引,运行时自然找不到。
  • 新资源未做全量构建:新增SVG文件后如果只触发热重载/热更新,Flutter不会刷新资源索引表,也会报找不到资源的错误。
  • 路径或文件不匹配:目录名、文件名拼写错误、大小写不一致(Windows本地文件系统大小写不敏感,但Android、iOS等移动端平台严格区分大小写),或者SVG文件本身下载损坏无法读取,也会触发该报错。
  • 版本兼容问题:你使用的flutter_svg 1.0.3版本存在部分SVG属性解析bug,少数特殊结构的SVG会加载失败。
解决步骤

按顺序逐一排查即可:

  1. 修正pubspec.yaml的资源配置,注意yaml缩进必须严格(assets节点要和uses-material-design同级,缩进2个空格),补充子目录声明:
flutter:
  uses-material-design: true
  assets:
    - assets/icons/
    - assets/icons/task/ # 补充子目录路径声明
  1. 停掉当前正在运行的调试进程,执行清理命令后全量重新构建,不要使用热重载:
flutter clean
flutter pub get
flutter run
  1. 核对文件路径正确性:
    • 确认项目本地路径下真实存在assets/icons/task/filter.svg文件,无拼写错误
    • 核对目录名、文件名的大小写和代码中写的路径完全一致,避免出现本地Windows能打开、真机运行找不到的问题
  2. 校验SVG文件有效性:直接在本地打开filter.svg,确认可以正常渲染,如果文件损坏重新下载替换即可。
  3. 以上步骤都无效的话,升级flutter_svg到兼容的稳定版本,修改pubspec.yaml依赖:
dependencies:
  flutter_svg: ^1.1.6

执行flutter pub get后重新编译即可。

你贴出的SvgButton组件代码逻辑没有问题,其中用到的.w屏幕适配方法只要正常定义就不会影响SVG加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 09:01:06