fix(alarms): prevent overlapping playback
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 2m0s
Build & Deploy Pluriwave / Análisis de código (push) Successful in 24s

This commit is contained in:
2026-05-22 19:40:02 +02:00
parent bc27e7832d
commit cfea818133
3 changed files with 72 additions and 13 deletions
+12 -2
View File
@@ -11,9 +11,14 @@ import '../servicios/servicio_audio.dart';
import '../widgets/pluri_glass_surface.dart';
class PantallaAlarmaSonando extends StatefulWidget {
const PantallaAlarmaSonando({super.key, required this.alarma});
const PantallaAlarmaSonando({
super.key,
required this.alarma,
this.audioPrearrancado = false,
});
final AlarmaMusical alarma;
final bool audioPrearrancado;
@override
State<PantallaAlarmaSonando> createState() => _PantallaAlarmaSonandoState();
@@ -45,7 +50,9 @@ class _PantallaAlarmaSonandoState extends State<PantallaAlarmaSonando> {
_radioIntentada = true;
await radio.audio.setVolumen(widget.alarma.volumen.clamp(0.0, 1.0));
unawaited(radio.reproducir(emisora));
if (!widget.audioPrearrancado) {
unawaited(radio.reproducir(emisora));
}
_estadoSub = radio.estadoStream.listen((estado) {
if (estado == EstadoReproduccion.reproduciendo && mounted) {
@@ -59,6 +66,9 @@ class _PantallaAlarmaSonandoState extends State<PantallaAlarmaSonando> {
_fallbackTimer = Timer(const Duration(seconds: 12), () {
if (mounted) _iniciarFallback();
});
if (widget.audioPrearrancado && radio.audio.estaSonando) {
_fallbackTimer?.cancel();
}
}
Future<void> _iniciarFallback() async {