AudioAlarmComponent.fromCrawledBlock constructor
AudioAlarmComponent.fromCrawledBlock(
- CrawledBlock block
Implementation
factory AudioAlarmComponent.fromCrawledBlock(CrawledBlock block) {
assert(
block.blockName.toUpperCase() == "VALARM",
"Received invalid block: ${block.blockName}",
);
DateTimeTriggerProperty? dateTimeTrigger;
DurationTriggerProperty? durationTrigger;
DurationProperty? duration;
RepeatCountProperty? repeatCount;
UriAttachmentProperty? uriAttachment;
BinaryAttachmentProperty? binaryAttachment;
for (var e in block.properties) {
switch (e.name.toUpperCase()) {
case "TRIGGER":
{
final isDuration = e.parameters.any(
(element) =>
element.name.toUpperCase() == "VALUE" &&
ValueDataTypeParameter.fromCrawledParameter(element).type ==
ValueType.duration,
);
if (isDuration) {
durationTrigger = DurationTriggerProperty.fromCrawledProperty(e);
} else {
dateTimeTrigger = DateTimeTriggerProperty.fromCrawledProperty(e);
}
break;
}
case "DURATION":
duration = DurationProperty.fromCrawledProperty(e);
break;
case "REPEAT":
repeatCount = RepeatCountProperty.fromCrawledProperty(e);
break;
case "ATTACH":
{
final isBinary = e.parameters.any(
(element) =>
element.name.toUpperCase() == "VALUE" &&
ValueDataTypeParameter.fromCrawledParameter(element).type ==
ValueType.binary,
);
if (isBinary) {
binaryAttachment =
BinaryAttachmentProperty.fromCrawledProperty(e);
} else {
uriAttachment = UriAttachmentProperty.fromCrawledProperty(e);
}
break;
}
default:
print(
"Unknown property encountered in AudioAlarmComponent: ${e.name}");
}
}
return AudioAlarmComponent(
dateTimeTrigger: dateTimeTrigger,
durationTrigger: durationTrigger,
duration: duration,
repeatCount: repeatCount,
uriAttachment: uriAttachment,
binaryAttachment: binaryAttachment,
);
}