Flutter- Как узнать, что AudioService остановлен?

Я работаю с пакетом flutter audio_service . Я хочу открыть страницу проигрывателя, если аудио служба остановится. Как получить событие остановки аудио службы? Я не нашел никаких событий, чтобы проверить, остановлена ​​ли служба

1 ответ

AudioService.running будет выдавать, когда служба запущена, а когда нет.

Чтобы слушать, когда он меняется с 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();
  }

Таким образом, вы можете отслеживать это состояние в пользовательском интерфейсе:

      AudioService.playbackStateStream.listen((state) {
  if (state.processingState == AudioProcessingState.stopped)) {
    // take action
  }
});
Другие вопросы по тегам