Flutter本地自定义package无法加载资源图片问题求助
解决Flutter本地自定义包加载图片资源的问题
核心原因
本地自定义包的资源属于独立的AssetBundle,主项目默认只会读取自身的资源 bundle,必须显式指定包名才能加载包内的资源。
1. 加载PNG图片的修正方法
修改Image.asset代码,添加package参数指定你的包名package1:
SizedBox( width: 30, height: 30, child: Image.asset("assets/icons/brightness.png", package: 'package1'), ),
2. 加载SVG图片(flutter_svg)的修正方法
同样需要在SvgPicture.asset中指定package参数:
SizedBox( width: 30, height: 30, child: SvgPicture.asset("assets/icons/your_icon.svg", package: 'package1'), ),
注意:确保flutter_svg已在主项目或package1的pubspec.yaml中添加依赖,并执行过flutter pub get。
3. 额外排查步骤
- 执行
flutter clean后再运行flutter pub get,清除资源缓存重新加载。 - 确认package1的目录结构:比如
package1/assets/icons/brightness.png文件真实存在,路径大小写与代码一致(Linux/macOS环境大小写敏感)。 - 若仍有问题,可尝试在package1的
pubspec.yaml中精确声明单个资源,而非整个目录:flutter: uses-material-design: true assets: - assets/icons/brightness.png - assets/icons/your_icon.svg
内容的提问来源于stack exchange,提问作者Arnob
相关产品推荐
相关产品推荐

