deserialize method
Deserializes the FML template elements, attributes and children
Implementation
@override
void deserialize(XmlElement xml) {
// deserialize
super.deserialize(xml);
// properties
value = Xml.get(node: xml, tag: 'value');
onChange = Xml.get(node: xml, tag: 'onchange');
if (_value == null) {
var txt = findChildOfExactType(TextModel);
if (txt is TextModel) value = txt.value;
}
editable = Xml.get(node: xml, tag: 'editable');
// add alarms
List<AlarmModel> alarms = findChildrenOfExactType(AlarmModel).cast<AlarmModel>();
for (var alarm in alarms) {
_alarms ??= [];
_alarms!.add(alarm);
// register a listener to the alarm
alarm.onChange(_onAlarmChange);
}
// fire initial alarm change
if (_alarms != null) {
_onAlarmChange(null);
}
}