fix(ui): unify scroll and improve playback switching
This commit is contained in:
@@ -106,7 +106,7 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
||||
|
||||
PresetEcualizador _presetActual = PresetEcualizador.flat;
|
||||
PresetEcualizador get presetActual => _presetActual;
|
||||
Future<void> _colaReproduccion = Future<void>.value();
|
||||
int _playRequestId = 0;
|
||||
|
||||
PluriWaveAudioHandler() {
|
||||
_setupStreams();
|
||||
@@ -214,14 +214,8 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> playMediaItem(MediaItem mediaItem) {
|
||||
_colaReproduccion = _colaReproduccion
|
||||
.catchError((_) {})
|
||||
.then((_) => _playMediaItemSerializado(mediaItem));
|
||||
return _colaReproduccion;
|
||||
}
|
||||
|
||||
Future<void> _playMediaItemSerializado(MediaItem mediaItem) async {
|
||||
Future<void> playMediaItem(MediaItem mediaItem) async {
|
||||
final requestId = ++_playRequestId;
|
||||
this.mediaItem.add(mediaItem);
|
||||
emisoraActual = _emisoraDesdeMediaItem(mediaItem);
|
||||
playbackState.add(playbackState.value.copyWith(
|
||||
@@ -231,11 +225,17 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
||||
));
|
||||
try {
|
||||
await _player.stop();
|
||||
if (requestId != _playRequestId) return;
|
||||
await _player.setUrl(mediaItem.id);
|
||||
if (requestId != _playRequestId) return;
|
||||
await _player.play();
|
||||
await _activarEcualizador();
|
||||
if (requestId == _playRequestId) {
|
||||
await _activarEcualizador();
|
||||
}
|
||||
} on PlayerException catch (e) {
|
||||
_gestionarErrorReproduccion(e);
|
||||
if (requestId == _playRequestId) {
|
||||
_gestionarErrorReproduccion(e);
|
||||
}
|
||||
throw Exception(_mensajeAmigable(e));
|
||||
} on Exception catch (e) {
|
||||
developer.log(
|
||||
@@ -243,13 +243,15 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
|
||||
name: 'ServicioAudio',
|
||||
level: 900,
|
||||
);
|
||||
playbackState.add(playbackState.value.copyWith(
|
||||
processingState: AudioProcessingState.error,
|
||||
playing: false,
|
||||
errorMessage: 'Error inesperado al reproducir',
|
||||
));
|
||||
emisoraActual = null;
|
||||
this.mediaItem.add(null);
|
||||
if (requestId == _playRequestId) {
|
||||
playbackState.add(playbackState.value.copyWith(
|
||||
processingState: AudioProcessingState.error,
|
||||
playing: false,
|
||||
errorMessage: 'Error inesperado al reproducir',
|
||||
));
|
||||
emisoraActual = null;
|
||||
this.mediaItem.add(null);
|
||||
}
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user