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
  index = Xml.get(node: xml, tag: 'index');
  showBar = Xml.get(node: xml, tag: 'bar') ?? Xml.get(node: xml, tag: 'tabbar');
  showMenu = Xml.get(node: xml, tag: 'menu') ?? Xml.get(node: xml, tag: 'tabbutton');
  allowback = Xml.get(node: xml, tag: 'allowback');

  // create Tabs
  var tabs = findChildrenOfExactType(TabModel).cast<TabModel>();

  // set prototype
  if (!isNullOrEmpty(datasource) && tabs.isNotEmpty) {

    // set prototype
    prototype = prototypeOf(tabs.first.element);
    tabs.removeAt(0);
  }

  // add remaining children
  for (var tab in tabs) {
    this.tabs.add(tab);
  }

  // remove tabs
  removeChildrenOfExactType(TabModel);
}