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

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