DisplayAlarmComponent.fromCrawledBlock constructor
DisplayAlarmComponent.fromCrawledBlock(
- CrawledBlock block
Implementation
factory DisplayAlarmComponent.fromCrawledBlock(CrawledBlock block) {
assert(
block.blockName.toUpperCase() == "VALARM",
"Received invalid block: ${block.blockName}",
);
DateTimeTriggerProperty? dateTimeTrigger;
DurationTriggerProperty? durationTrigger;
DurationProperty? duration;
RepeatCountProperty? repeatCount;
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;
default:
print(
"Unknown property encountered in DisplayAlarmComponent: ${e.name}");
}
}
return DisplayAlarmComponent(
dateTimeTrigger: dateTimeTrigger,
durationTrigger: durationTrigger,
duration: duration,
repeatCount: repeatCount,
);
}