fix(player): stabilize first playback and refresh design
Build & Deploy Pluriwave / Análisis de código (push) Successful in 12s
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m20s

This commit is contained in:
2026-05-20 22:50:39 +02:00
parent 22e19d1cb0
commit b9cf42b91c
27 changed files with 131 additions and 31 deletions
+17 -5
View File
@@ -61,6 +61,7 @@ class EstadoRadio extends ChangeNotifier {
bool _cargandoPopulares = false;
bool _cargandoBusqueda = false;
EstadoReproduccion _estadoReproduccion = EstadoReproduccion.detenido;
String? _errorCarga;
List<Emisora> get populares => _populares;
@@ -118,12 +119,11 @@ class EstadoRadio extends ChangeNotifier {
/// Escucha el stream de estado del audio y gestiona errores de reproducción.
void _escucharErroresReproduccion() {
_suscripcionEstadoAudio = audio.estadoStream.listen((estado) {
if (estado == EstadoReproduccion.error) {
if (timer.activo) {
unawaited(timer.cancelar());
}
notifyListeners();
_estadoReproduccion = estado;
if (estado == EstadoReproduccion.error && timer.activo) {
unawaited(timer.cancelar());
}
notifyListeners();
});
}
@@ -192,7 +192,19 @@ class EstadoRadio extends ChangeNotifier {
}
Future<void> reproducir(Emisora emisora) async {
final actual = audio.emisoraActual;
final mismaEmisoraActiva = actual?.uuid == emisora.uuid;
final yaEstaConectandoOSonando =
_estadoReproduccion == EstadoReproduccion.cargando ||
_estadoReproduccion == EstadoReproduccion.reproduciendo ||
audio.estaSonando;
if (mismaEmisoraActiva && yaEstaConectandoOSonando) {
notifyListeners();
return;
}
try {
notifyListeners();
await audio.reproducir(emisora);
unawaited(radio.registrarClick(emisora.uuid));
await _aplicarPresetActivo(_presetParaEmisora(emisora.uuid));