Flutter使用audioplayers加载音频报错:Unable to load asset
音频资源加载失败的解决方案
根据你提供的错误信息、代码和配置,问题核心是路径层级重复导致系统无法定位到音频文件,以下是具体排查和修复步骤:
1. 定位问题根源
错误提示Unable to load asset: "assets/lib/assets/audio/2.wav"显示,系统在尝试加载项目根目录/assets/lib/assets/audio/2.wav,但你的实际音频文件路径是项目根目录/lib/assets/audio/2.wav,路径前缀出现了重复拼接。
2. 修复方案(两种可选)
方案一:遵循Flutter资源规范(推荐)
Flutter默认推荐将资源放在项目根目录的assets文件夹下,而非lib目录内,调整后可彻底避免路径混淆:
- 移动资源文件夹:将
lib/assets整个文件夹移到项目根目录,最终路径为项目根目录/assets。 - 修改pubspec.yaml配置:去掉所有资源路径前的
lib/前缀:assets: - assets/img/tab_1.png - assets/img/tab_1s.png # ... 其他图片资源省略 - assets/audio/1.mp3 - assets/audio/2.wav - 修正代码中的路径:
ElevatedButton( child: Text('Click me'), onPressed: () async { final player = AudioPlayer(); await player.play(AssetSource('assets/audio/2.wav')); }, )
方案二:保留现有文件夹结构
如果不想移动资源,可通过优化配置和代码路径解决问题:
- 优化pubspec.yaml配置:将单个文件配置改为整个文件夹配置,避免遗漏或拼写错误:
assets: - lib/assets/img/ - lib/assets/audio/ - 修正代码并执行清理:确保路径与pubspec配置完全一致,然后执行以下命令重置项目:
终端执行:ElevatedButton( child: Text('Click me'), onPressed: () async { final player = AudioPlayer(); await player.play(AssetSource('lib/assets/audio/2.wav')); }, )
重启项目后测试。flutter clean flutter pub get
3. 额外检查项
- 确认文件名和路径的大小写完全匹配(部分系统区分大小写,比如
2.wav不能写成2.WAV)。 - 确保pubspec.yaml中
assets配置的缩进正确(需在flutter:节点下,与uses-material-design同级)。
内容的提问来源于stack exchange,提问作者Rezam
相关产品推荐
相关产品推荐

