Flutter音频播放异常:asset资源加载失败及pubspec配置错误求助
问题原因分析
从报错信息和代码、配置来看,问题集中在三个点:
- 资源配置与实际目录不匹配:pubspec.yaml里配置的
audio/路径找不到对应物理目录,同时代码引用资源时重复添加assets/前缀,导致系统查找不存在的assets/assets/audio/sound_alarm.mp3路径。 - 代码路径冗余:
setSourceAsset和AssetSource的参数不需要额外加assets/,Flutter会自动基于pubspec中配置的assets根目录解析路径,重复添加会导致路径错误。 - 目录结构可能错误:项目中未正确创建
assets/audio目录,或者音频文件未放在指定位置。
解决方案
1. 确认并修正目录结构
确保项目根目录下存在assets/audio文件夹,音频文件的完整路径为:项目根目录/assets/audio/sound_alarm.mp3
2. 修正pubspec.yaml的assets配置
保证配置缩进正确,指向实际的音频资源目录:
flutter: uses-material-design: true assets: - assets/audio/
注意:assets:必须是flutter:的子项,缩进要与同级配置(如uses-material-design)保持一致。
3. 修正代码中的资源路径
修改play方法,移除路径中的assets/前缀,简化写法:
play() async { await player.play(AssetSource('audio/sound_alarm.mp3')); }
如果需要先设置资源再播放,也可以写成:
play() async { await player.setSourceAsset('audio/sound_alarm.mp3'); player.play(); }
4. 清理缓存并重启项目
执行命令清除Flutter缓存,避免旧配置干扰:
flutter clean
之后重新运行项目:
flutter run
内容的提问来源于stack exchange,提问作者Neel_chodvadiya
相关产品推荐
相关产品推荐

