deserialize method
Deserializes the FML template elements, attributes and children
Implementation
@override
void deserialize(XmlElement xml) {
// deserialize
super.deserialize(xml);
/// border attributes
border = Xml.get(node: xml, tag: 'border');
radius = Xml.get(node: xml, tag: 'radius');
borderColor = Xml.get(node: xml, tag: 'bordercolor');
borderWidth = Xml.get(node: xml, tag: 'borderwidth');
borderLabel = Xml.get(node: xml, tag: 'borderlabel');
// set default border on any border property specified
if (_border == null &&
(_radius != null ||
_borderColor != null ||
_borderWidth != null ||
_borderLabel != null)) {
border = "all";
}
// shadow attributes
elevation = Xml.get(node: xml, tag: 'elevation');
shadowColor = Xml.get(node: xml, tag: 'shadowcolor');
shadowX = Xml.get(node: xml, tag: 'shadowx');
shadowY = Xml.get(node: xml, tag: 'shadowy');
/// layout
layout = Xml.get(node: xml, tag: 'layout');
center = Xml.get(node: xml, tag: 'center');
wrap = Xml.get(node: xml, tag: 'wrap');
expand = Xml.get(node: xml, tag: 'expand');
// set padding. Can be comma separated top,left,bottom,right
// space around the widget's children
var padding = Xml.attribute(node: xml, tag: 'pad') ??
Xml.attribute(node: xml, tag: 'padding');
this.padding = padding;
/// other style attributes
gradientStart = Xml.get(node: xml, tag: 'gradientstart') ??
Xml.get(node: xml, tag: 'start');
gradientEnd = Xml.get(node: xml, tag: 'gradientend') ??
Xml.get(node: xml, tag: 'end');
// blur - if blur is true, set to 5 (legacy)
var blur = Xml.get(node: xml, tag: 'blur');
if (blur?.trim().toLowerCase() == "true") blur="5";
this.blur = blur;
// build drawers
List<XmlElement>? nodes;
nodes = Xml.getChildElements(node: xml, tag: "DRAWER");
if (nodes != null && nodes.isNotEmpty) {
drawer = DrawerModel.fromXmlList(this, nodes);
}
}