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

  // properties
  pager = Xml.get(node: xml, tag: 'pager');

  // build pages
  List<PageModel> pages = findChildrenOfExactType(PageModel).cast<PageModel>();

    // set prototype
    if ((!S.isNullOrEmpty(datasource)) && (pages.isNotEmpty))
    {
      prototype = WidgetModel.prototypeOf(pages[0].element);
      pages.removeAt(0);
    }

    // build items
    for (var page in pages) {
      this.pages.add(page);
    }


  if (pages.isEmpty)
  {
    XmlDocument missingXml = XmlDocument.parse('<PAGE><CENTER><TEXT value="Missing <Page /> Element" /></CENTER></PAGE>');
    var page = PageModel.fromXml(this, missingXml.rootElement);
    if (page != null) this.pages.add(page);
  }

  currentpage = Xml.get(node: xml, tag: 'initialpage') ?? 1;
}