Flutter中AudioPlayer播放Assets音频抛出路径为空异常求助
Flutter audioplayers无法识别子目录音频资源的解决方案
1. 先确认pubspec.yaml的Assets配置
必须正确包含音频所在的子目录,否则Flutter无法打包该目录下的资源。示例配置:
flutter: uses-material-design: true assets: # 保留图片目录(若有需求) - assets/images/numbers/ # 必须配置音频所在的子目录 - assets/sounds/numbers/ # 或者用通配符包含整个sounds目录下的所有文件及子目录 # - assets/sounds/
配置完成后执行flutter pub get使配置生效。
2. 正确使用AssetSource指定音频路径
audioplayers的AssetSource不需要带开头的assets/前缀,路径是相对于pubspec中配置的assets根目录的相对路径。
假设你的音频文件实际路径为assets/sounds/numbers/number_one_sound.mp3,正确调用代码如下:
IconButton( onPressed: () async { final player = AudioPlayer(); try { await player.play(AssetSource('sounds/numbers/number_one_sound.mp3')); } catch (e) { print('播放异常:$e'); } }, icon: Icon(Icons.play_arrow), )
3. 错误代码分析
- 第一段代码仅填写文件名
number_one_sound.mp3,未指定子目录路径,导致资源查找失败 - 第二段代码错误地将目录作为
AssetSource参数,还在play方法中强制把字符串转换为Source类型,完全不符合API使用规范
额外注意事项
- 路径区分大小写,必须和实际文件的路径、文件名完全一致
- 修改pubspec.yaml或资源文件后,建议重启IDE或执行
flutter clean && flutter pub get再测试 - 可通过
await rootBundle.load('assets/sounds/numbers/number_one_sound.mp3')先测试资源能否正常加载,排查是否为路径问题
内容的提问来源于stack exchange,提问作者AHMAD IBRAHIM
相关产品推荐
相关产品推荐

