deserialize method

  1. @override
void deserialize(
  1. XmlElement xml
)
override

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);
  }
}