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
  var label = Xml.get(node: xml, tag: 'label');
  var value = Xml.get(node: xml, tag: 'value');

  // <OPTION>xxx</OPTION> style
  if (label == null && viewableChildren.isEmpty) {
    var text = Xml.getText(xml);
    if (!isNullOrEmpty(text)) label = text;
  }

  // label specified but not value
  if (value == null && label != null) value = label;

  // set option type
  _type = Xml.get(node: xml, tag: 'type')?.toLowerCase().trim();

  // set label and value
  this.label = label;
  this.value = value;

  // add text model
  if (viewableChildren.isEmpty)
  {
    children ??= [];
    children!.add(TextModel(this,null,value: label ?? value));
  }
}