fix(player): separate selection from audio state
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m15s
Build & Deploy Pluriwave / Análisis de código (push) Successful in 11s

This commit is contained in:
2026-05-21 01:12:13 +02:00
parent b23450819c
commit ef22454350
3 changed files with 29 additions and 87 deletions
+5 -1
View File
@@ -46,6 +46,7 @@ class EstadoRadio extends ChangeNotifier {
StreamSubscription<EstadoReproduccion>? _suscripcionEstadoAudio;
Future<void>? _initFuture;
int _revisionReproduccion = 0;
Emisora? _emisoraSeleccionada;
// Errores de reproducción → SnackBar.
final _errorController = StreamController<String>.broadcast();
@@ -91,7 +92,7 @@ class EstadoRadio extends ChangeNotifier {
String? get paisCercanoDetectado => _paisCercanoDetectado;
String? get errorCercanas => _errorCercanas;
String? get error => _errorCarga;
Emisora? get emisoraActual => audio.emisoraActual;
Emisora? get emisoraActual => _emisoraSeleccionada ?? audio.emisoraActual;
Stream<EstadoReproduccion> get estadoStream => audio.estadoStream;
PresetEcualizador get presetEcualizador => _presetActual;
PresetEcualizador get presetPrincipalEcualizador => _presetPrincipal;
@@ -305,6 +306,8 @@ class EstadoRadio extends ChangeNotifier {
Future<void> reproducir(Emisora emisora) async {
final revision = ++_revisionReproduccion;
_emisoraSeleccionada = emisora;
notifyListeners();
try {
await audio.reproducir(emisora);
if (revision != _revisionReproduccion) return;
@@ -318,6 +321,7 @@ class EstadoRadio extends ChangeNotifier {
unawaited(timer.cancelar());
}
final mensajeError = e.toString().replaceFirst('Exception: ', '');
_emisoraSeleccionada = audio.emisoraActual;
_errorController.add(
mensajeError.isNotEmpty && mensajeError != 'Exception'
? mensajeError