Flutter中安装时资源交付的子目录使用问题
解决FlutterPlayAssetDelivery访问子文件夹资源失败的问题
1. 检查pubspec.yaml的资源配置
确保pubspec.yaml里正确声明了需要交付的资源,尤其是子文件夹的资源:
flutter: assets: - assets/reset.png - assets/fu/ # 递归包含fu文件夹下所有文件及子文件夹 # 如果是fu文件夹内还有fu子文件夹,要写- assets/fu/fu/
如果只需指定单个文件,直接写完整路径:assets/fu/logo.png(根据实际文件位置调整)。
2. 核对实际文件路径与访问路径
先确认本地文件系统的真实结构:
- 若文件是
assets/fu/logo.png,访问路径应为fu/logo.png - 若文件是
assets/fu/fu/logo.png(fu文件夹下嵌套fu子文件夹),访问路径必须是fu/fu/logo.png
避免因路径层级描述错误导致访问失败。
3. 使用FlutterPlayAssetDelivery专属API访问资源
不能用Flutter默认的AssetImage或rootBundle方法,必须用包提供的API:
import 'package:flutter_play_asset_delivery/flutter_play_asset_delivery.dart'; // 加载图片资源 final bytes = await FlutterPlayAssetDelivery.loadAsset('fu/logo.png'); final image = MemoryImage(bytes); // 或者直接用封装好的Widget PlayAssetImage('fu/logo.png')
4. 验证bundletool打包是否包含目标资源
用bundletool生成APKS后,检查资源是否被正确打包:
- 生成appbundle:
flutter build appbundle - 构建APKS文件:
bundletool build-apks --bundle=build/app/outputs/bundle/release/app-release.aab --output=app.apks --mode=universal
- 解压app.apks,查看
assets/目录下是否存在fu/logo.png,确认资源被正确包含。
5. 清理缓存重新构建
缓存可能导致资源未更新,执行以下命令重置构建环境:
flutter clean flutter pub get flutter build appbundle
内容的提问来源于stack exchange,提问作者Yasan Malik
相关产品推荐
相关产品推荐

