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

  // checkboxes can have multiple values
  var values = Xml.getChildElements(node: xml, tag: 'value');
  if (values != null)
  values.forEach((element)
  {
    String? v = Xml.getText(element);
    if (!S.isNullOrEmpty(v))
    {
      if (_value == null) value = v;
      else if (!_value!.contains(v)) _value!.add(v);
    }
  });

  /// layout attributes
  layout = Xml.get(node: xml, tag: 'layout');
  center = Xml.get(node: xml, tag: 'center');
  wrap = Xml.get(node: xml, tag: 'wrap');

  /// styling attributes
  size  = Xml.get(node: xml, tag: 'size');

  // clear options
  this.options.forEach((option) => option.dispose());
  this.options.clear();

  // Build options
  List<OptionModel> options = findChildrenOfExactType(OptionModel).cast<OptionModel>();

  // set prototype
  if ((!S.isNullOrEmpty(datasource)) && (options.isNotEmpty))
  {
    prototype = S.toPrototype(options[0].element.toString());
    options.removeAt(0);
  }

  // build options
  options.forEach((option) => this.options.add(option));
}