fix(player): restore stable audio switching
This commit is contained in:
@@ -304,7 +304,6 @@ class EstadoRadio extends ChangeNotifier {
|
|||||||
|
|
||||||
Future<void> reproducir(Emisora emisora) async {
|
Future<void> reproducir(Emisora emisora) async {
|
||||||
try {
|
try {
|
||||||
notifyListeners();
|
|
||||||
await audio.reproducir(emisora);
|
await audio.reproducir(emisora);
|
||||||
unawaited(radio.registrarClick(emisora.uuid));
|
unawaited(radio.registrarClick(emisora.uuid));
|
||||||
await _aplicarPresetActivo(_presetParaEmisora(emisora.uuid));
|
await _aplicarPresetActivo(_presetParaEmisora(emisora.uuid));
|
||||||
|
|||||||
@@ -106,7 +106,6 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
|||||||
|
|
||||||
PresetEcualizador _presetActual = PresetEcualizador.flat;
|
PresetEcualizador _presetActual = PresetEcualizador.flat;
|
||||||
PresetEcualizador get presetActual => _presetActual;
|
PresetEcualizador get presetActual => _presetActual;
|
||||||
int _playRequestId = 0;
|
|
||||||
|
|
||||||
PluriWaveAudioHandler() {
|
PluriWaveAudioHandler() {
|
||||||
_setupStreams();
|
_setupStreams();
|
||||||
@@ -215,27 +214,15 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Future<void> playMediaItem(MediaItem mediaItem) async {
|
Future<void> playMediaItem(MediaItem mediaItem) async {
|
||||||
final requestId = ++_playRequestId;
|
|
||||||
this.mediaItem.add(mediaItem);
|
this.mediaItem.add(mediaItem);
|
||||||
emisoraActual = _emisoraDesdeMediaItem(mediaItem);
|
|
||||||
playbackState.add(playbackState.value.copyWith(
|
|
||||||
processingState: AudioProcessingState.loading,
|
|
||||||
playing: false,
|
|
||||||
errorMessage: null,
|
|
||||||
));
|
|
||||||
try {
|
try {
|
||||||
await _player.stop();
|
await _player.stop();
|
||||||
if (requestId != _playRequestId) return;
|
|
||||||
await _player.setUrl(mediaItem.id);
|
await _player.setUrl(mediaItem.id);
|
||||||
if (requestId != _playRequestId) return;
|
|
||||||
await _player.play();
|
await _player.play();
|
||||||
if (requestId == _playRequestId) {
|
emisoraActual = _emisoraDesdeMediaItem(mediaItem);
|
||||||
await _activarEcualizador();
|
await _activarEcualizador();
|
||||||
}
|
|
||||||
} on PlayerException catch (e) {
|
} on PlayerException catch (e) {
|
||||||
if (requestId == _playRequestId) {
|
_gestionarErrorReproduccion(e);
|
||||||
_gestionarErrorReproduccion(e);
|
|
||||||
}
|
|
||||||
throw Exception(_mensajeAmigable(e));
|
throw Exception(_mensajeAmigable(e));
|
||||||
} on Exception catch (e) {
|
} on Exception catch (e) {
|
||||||
developer.log(
|
developer.log(
|
||||||
@@ -243,15 +230,13 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
|||||||
name: 'ServicioAudio',
|
name: 'ServicioAudio',
|
||||||
level: 900,
|
level: 900,
|
||||||
);
|
);
|
||||||
if (requestId == _playRequestId) {
|
playbackState.add(playbackState.value.copyWith(
|
||||||
playbackState.add(playbackState.value.copyWith(
|
processingState: AudioProcessingState.error,
|
||||||
processingState: AudioProcessingState.error,
|
playing: false,
|
||||||
playing: false,
|
errorMessage: 'Error inesperado al reproducir',
|
||||||
errorMessage: 'Error inesperado al reproducir',
|
));
|
||||||
));
|
emisoraActual = null;
|
||||||
emisoraActual = null;
|
this.mediaItem.add(null);
|
||||||
this.mediaItem.add(null);
|
|
||||||
}
|
|
||||||
rethrow;
|
rethrow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user