You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:22:43