微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter-如何知道 AudioService 已停止?

如何解决Flutter-如何知道 AudioService 已停止?

我正在使用 audio_service 颤振包。如果音频服务停止,我想弹出一个播放器页面。如何获得音频服务停止事件?我没有找到任何事件来检查服务是否停止

解决方法

AudioService.running 将在服务运行时发出 true,在服务未运行时发出 false

要在 true 变为 false 时进行收听,您可以试试这个:

// Cast runningStream from dynamic to the correct type.
final runningStream =
    AudioService.runningStream as ValueStream<bool>;
// Listen to stream pairwise and observe when it becomes false
runningStream.pairwise().listen((pair) {
  final wasRunning = pair.first;
  final isRunning = pair.last;
  if (wasRunning && !isRunning) {
    // take action
  }
});

如果您想监听 stopped 的播放状态,则需要确保您的后台音频任务实际上在 onStop 中发出该状态更改:

  @override
  Future<void> onStop() async {
    await _player.dispose();
    // the "await" is important
    await AudioServiceBackground.setState(
        processingState: AudioProcessingState.stopped);
    // Shut down this task
    await super.onStop();
  }

这样,您就可以在 UI 中监听此状态:

AudioService.playbackStateStream.listen((state) {
  if (state.processingState == AudioProcessingState.stopped)) {
    // take action
  }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。