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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:03:10