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