deserialize method

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

Deserializes the FML template elements, attributes and children

Implementation

@override
void deserialize(XmlElement? xml) {
  if (xml == null) return;

  // deserialize
  super.deserialize(xml);

  // properties
  type = Xml.get(node: xml, tag: 'type');
  backgroundcolor = Xml.get(node: xml, tag: 'backgroundcolor');
  margin = Xml.get(node: xml, tag: 'margin');
  title = Xml.get(node: xml, tag: 'title');
  selected = Xml.get(node: xml, tag: 'selected');
  selectable = Xml.get(node: xml, tag: 'selectable');
  onclick = Xml.get(node: xml, tag: 'onclick');
  onInsert = Xml.get(node: xml, tag: 'onInsert');
  onDelete = Xml.get(node: xml, tag: 'onDelete');
  postbrokers = Xml.attribute(node: xml, tag: 'post') ?? Xml.attribute(node: xml, tag: 'postbroker');

  // find all descendants
  List<dynamic>? fields = findDescendantsOfExactType(null);
  for (var field in fields) {
    // form field?
    if (field is IFormField) {
      // Build Fields
      if (this.fields == null) this.fields = [];
      this.fields!.add(field);

      // Register Listener to Dirty Field
      field.registerDirtyListener(onDirtyListener);
    }
  }
}