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

Flutter audioplayer ^4.1.0:initState每秒复用音频的问题咨询

问题解答

一、你的代码存在这些问题

  • 不必要的setState调用:播放音频不需要触发UI重绘,setState()会导致组件反复重建,消耗不必要的性能,完全可以去掉这层包裹。
  • 音频叠加播放风险:如果sound1.wav的时长超过你设置的widget.time(比如1000毫秒),定时器会在旧音频还没结束时就触发新的播放,导致多个音频同时播放,出现杂音。
  • 语法不完整:你提供的代码缺少Timer.periodic回调的闭合括号和分号,实际运行会报错,完整的回调代码应该是:
_timer = Timer.periodic(Duration(milliseconds: widget.time), (timer) {
  audioPlayer.play(AssetSource('audios/sound1.wav'));
});
  • 未处理资源销毁:必须在组件的dispose()方法中取消定时器并释放AudioPlayer资源,避免内存泄漏:
@override
void dispose() {
  _timer?.cancel();
  audioPlayer.dispose();
  super.dispose();
}

二、关于AudioCache的play方法

在audioplayer ^4.1.0版本中,AudioCache已经被移除,这个类是旧版(如0.x、1.x)的API。现在播放本地音频直接通过AudioPlayer的play方法配合AssetSource即可,不需要再使用AudioCache,自然也不存在它的play方法了。

内容的提问来源于stack exchange,提问作者Abdusattarov Abdusamad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:41:58