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