Flutter audioplayers路径坑 Unhandled Exception: Unable to load asset:

一开始我是这样写的

//发出提示音
var audioPlayer = AudioPlayer();
audioPlayer.setPlayerMode(PlayerMode.lowLatency);
audioPlayer.setReleaseMode(ReleaseMode.loop);
audioPlayer.play(AssetSource('sounds/1.mp3'));

可是它不停的报错:

Unhandled Exception: Unable to load asset:

这是我的目录


目录结构

后来在源码中仔细研究了一番

 // read local asset from rootBundle
    final byteData = await rootBundle.load('$prefix$fileName');

发现有个prefix
在往上看

 /// This is the path inside your assets folder where your files lie.
  ///
  /// For example, Flame uses the prefix 'assets/audio/'
  /// (you must include the final slash!).
  /// The default prefix (if not provided) is 'assets/'
  /// Your files will be found at <prefix><fileName> (so the trailing slash is
  /// crucial).
  String prefix;

  AudioCache({this.prefix = 'assets/'});

原来如此,它默认的根目录是assets/
可以选择将音频文件移动到assets/中,也可以直接修改这个perfix

audioPlayer.audioCache.prefix = '';

加上⬆️这一行就可以了

最终代码⬇️

//发出提示音
var audioPlayer = AudioPlayer();
audioPlayer.setPlayerMode(PlayerMode.lowLatency);
audioPlayer.setReleaseMode(ReleaseMode.loop);
audioPlayer.audioCache.prefix = '';
audioPlayer.play(AssetSource('sounds/1.mp3'));
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容