fix(player): separate selection from audio state
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user