AudioCache已淘汰,如何在Flutter中正常添加音频播放器?
Flutter 音频播放器添加方案(解决AudioCache弃用问题)
问题原因
你遇到的是AudioCache API已被官方废弃的问题,当前主流音频播放包(如audioplayers)从v0.15.0版本开始,不再推荐使用AudioCache,取而代之的是AssetSource等新资源加载方式。
具体解决步骤(以audioplayers为例)
1. 安装最新版依赖
在项目的pubspec.yaml中添加依赖:
dependencies: audioplayers: ^6.0.0 # 建议使用最新稳定版
执行命令更新依赖:
flutter pub get
2. 配置本地音频资源
将音频文件放在项目的assets/audio/目录下(可自定义路径),然后在pubspec.yaml中声明资源:
flutter: assets: - assets/audio/your_audio.mp3 # 若有多个文件,可逐个添加或用目录通配符:- assets/audio/
3. 使用新API播放音频
直接通过AudioPlayer结合AssetSource加载本地音频,替代原AudioCache的用法:
import 'package:audioplayers/audioplayers.dart'; // 初始化播放器实例 final AudioPlayer audioPlayer = AudioPlayer(); // 播放本地音频 Future<void> playAudio() async { // 路径对应pubspec中声明的assets下的相对路径 await audioPlayer.play(AssetSource('audio/your_audio.mp3')); } // 暂停播放 Future<void> pauseAudio() async { await audioPlayer.pause(); } // 停止播放并释放资源 Future<void> stopAudio() async { await audioPlayer.stop(); await audioPlayer.dispose(); }
4. 监听播放状态(可选)
可以监听播放器状态变化,实现UI交互逻辑:
audioPlayer.onPlayerStateChanged.listen((PlayerState state) { switch (state) { case PlayerState.playing: // 处理播放中逻辑 break; case PlayerState.paused: // 处理暂停逻辑 break; case PlayerState.stopped: // 处理停止逻辑 break; default: break; } });
其他音频包适配提示
如果使用just_audio等其他包,核心思路一致:
- 放弃使用
AudioCache相关API - 使用对应包提供的资源加载类(如
AudioSource.asset)加载本地音频
内容的提问来源于stack exchange,提问作者Ahmadreza yazdinejad
相关产品推荐
相关产品推荐

