fix(player): handle play errors on station switch
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m23s
Build & Deploy Pluriwave / Análisis de código (push) Successful in 12s

This commit is contained in:
2026-05-21 00:23:59 +02:00
parent 6249ed1b2c
commit ee26c78d82
+27 -2
View File
@@ -223,9 +223,9 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
errorMessage: null, errorMessage: null,
)); ));
try { try {
await _player.stop(); await _resetearPlayerParaNuevaEmisora();
await _player.setUrl(mediaItem.id); await _player.setUrl(mediaItem.id);
unawaited(_player.play()); _iniciarPlaybackSeguro(mediaItem);
await _activarEcualizador(); await _activarEcualizador();
} on PlayerException catch (e) { } on PlayerException catch (e) {
_gestionarErrorReproduccion(e); _gestionarErrorReproduccion(e);
@@ -247,6 +247,31 @@ class PluriWaveAudioHandler extends BaseAudioHandler with SeekHandler {
} }
} }
Future<void> _resetearPlayerParaNuevaEmisora() async {
try {
await _player.stop();
await _player.seek(Duration.zero);
} catch (_) {
await _player.stop();
}
}
void _iniciarPlaybackSeguro(MediaItem item) {
unawaited(
_player.play().catchError((Object error, StackTrace stackTrace) {
developer.log(
'[PluriWave] Error al iniciar play: $error',
name: 'ServicioAudio',
level: 900,
stackTrace: stackTrace,
);
if (mediaItem.value?.id == item.id) {
_gestionarErrorReproduccion(error);
}
}),
);
}
Future<void> _activarEcualizador() async { Future<void> _activarEcualizador() async {
try { try {
final params = await _eq.parameters; final params = await _eq.parameters;