isRinging static method
Whether the alarm is ringing.
If no id is provided, it checks if any alarm is ringing.
If an id is provided, it checks if the specific alarm with that id
is ringing.
Implementation
static Future<bool> isRinging([int? id]) async {
final isRinging = iOS
? await IOSAlarm().isRinging(id)
: await AndroidAlarm().isRinging(id);
// Defensive programming: check if the stream status matches the platform
// reported status.
if (id != null) {
final alarm = await getAlarm(id);
if (alarm == null) {
if (_scheduled.value.containsId(id)) {
_log.severe('Alarm with id $id was not found but was '
'ringing=$isRinging and marked as scheduled.');
}
if (_ringing.value.containsId(id)) {
_log.severe('Alarm with id $id was not found but was '
'ringing=$isRinging and marked as ringing.');
}
} else {
if (isRinging != _ringing.value.contains(alarm)) {
_log.severe('Alarm with id $id is ringing=$isRinging but was '
'not marked as such.');
}
}
}
return isRinging;
}