首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter如何知道AudioService已停止?

Flutter如何知道AudioService已停止?
EN

Stack Overflow用户
提问于 2021-02-22 20:05:28
回答 1查看 211关注 0票数 0

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 14:42:44

(答案更新:从v0.18开始,服务实际上总是在应用运行的同时运行,所以不再需要检查。以下答案适用于v0.17及更早版本。)

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

要监听它何时从true更改为false,可以尝试这样做:

代码语言:javascript
复制
// 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中实际发出该状态更改

代码语言:javascript
复制
  @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中侦听此状态:

代码语言:javascript
复制
AudioService.playbackStateStream.listen((state) {
  if (state.processingState == AudioProcessingState.stopped)) {
    // take action
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66315383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档