flutter - 我无法在音频播放器中停止/暂停歌曲
问题描述
我audioplayers
在我的代码中使用插件。
我可以播放音频,但无法停止/暂停音频。以下是我用来播放/停止音频的功能。
Future<void> onPlay({@required filepath, @required index}) async {
AudioPlayer audioPlayer = AudioPlayer(mode: PlayerMode.MEDIA_PLAYER);
if (!_isPlaying) {
int result = await audioPlayer.play(filepath, isLocal: true);
if (result == 1) {
setState(() {
_isPlaying = true;
_selectedIndex = index;
});
}
} else {
int result = await audioPlayer.stop();
if (result == 1) {
setState(() {
_isPlaying = false;
});
}
}
}
}
解决方案
AudioPlayer audioPlayer
每次调用 时,您都在实例化一个新对象onPlay
,这使您以后无法停止同一个播放器。
将您AudioPlayer audioPlayer
的状态存储在某处。
AudioPlayer audioPlayer = AudioPlayer(mode: PlayerMode.MEDIA_PLAYER);
Future<void> onPlay({@required filepath, @required index}) async {
if (!_isPlaying) {
int result = await audioPlayer.play(filepath, isLocal: true);
if (result == 1) {
setState(() {
_isPlaying = true;
_selectedIndex = index;
});
}
} else {
int result = await audioPlayer.stop();
if (result == 1) {
setState(() {
_isPlaying = false;
});
}
}
}
推荐阅读
- javascript - 停止后将 FlipClock.js 数字设置为零
- elasticsearch - 搜索多个值时如何在elasticsearch中搜索时键入
- sql-server - Microsoft SQL Server Report Builder,如何添加特定列的行元素
- html - CSS3 动画未在 IE 11 和 IE Edge 中显示
- windows - 使用 SFTP 从 OpenVms 将 ANSI 文件下载到 Windows 系统。文件中添加了额外的 nul 字符
- c++ - 是否可以在自定义 QGraphicsWidget 中嵌入 QWidget?
- acumatica - 套件组装发布抛出“另一个流程已更新”消息?
- javascript - 使用 !!在 JS 表达式中
- mysql - SQL 查询帮助 - 工具包结构加入属性
- angular - 如何在插入后自动添加列表而无需在角度 5 中刷新页面