首页 > 解决方案 > 我无法在音频播放器中停止/暂停歌曲

问题描述

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;
        });
      }
    }
  }
}

标签: flutterdartaudio-player

解决方案


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;
      });
    }
  }
}

推荐阅读