fix(alarms): prevent overlapping playback
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user