Flutter Web构建后flutter_svg加载minified版本异常求助
用flutter_svg展示SVG文件时,本地Debug模式正常运行,但构建后部署到GitHub Pages出现加载错误:
- Debug模式成功加载的资源路径:
localhost:39469/assets/assets/img/chakra-map/nochakra.svg - 构建版本错误加载的路径:
assets/img/chakra-map/minified:fi.svg
报错信息:
Uncaught : Unable to load asset: "assets/img/chakra-map/minified:fi.svg".
c js_helper.dart:1196
$1 asset_bundle.dart:324
zJ zone.dart:1661
$0 future_impl.dart:127
q_ future_impl.dart:867
lj future_impl.dart:643
$0 future_impl.dart:713
aAf schedule_microtask.dart:40
aAz schedule_microtask.dart:49
$1 async_patch.dart:48
搜索构建后的代码发现,main.dart.js里存在生成压缩路径的逻辑:
grep -r 'minified' main.dart.js:return"minified:"+a},
1. 禁用SVG资源压缩
在项目的pubspec.yaml中添加配置,强制关闭flutter_svg的资源压缩功能:
flutter: assets: - assets/img/chakra-map/ svg: use_minified: false
或者在应用初始化时,手动配置SvgCache关闭压缩:
void main() { SvgPicture.svgCache = SvgCache( useMinifiedAssets: false, // 禁用压缩资源加载 ); runApp(const MyApp()); }
2. 检查资源引用路径
确保代码里引用SVG的路径是完整的静态相对路径,比如:
SvgPicture.asset('assets/img/chakra-map/nochakra.svg')
避免使用动态生成路径的逻辑,防止被压缩工具篡改。
是否需要上报Bug?
这属于flutter_svg在Web构建场景下的路径处理Bug,启用资源压缩时路径拼接逻辑出错,生成了无效的minified:fi.svg格式路径。建议到flutter_svg的官方仓库提交Issue,带上你的复现步骤、构建环境和报错信息。
内容的提问来源于stack exchange,提问作者User

