fromXmlList static method
Implementation
static DrawerModel? fromXmlList(WidgetModel parent, List<XmlElement> elements)
{
DrawerModel? model;
try
{
bool handleLeft = false;
bool handleRight = false;
bool handleTop = false;
bool handleBottom = false;
double? sizeLeft;
double? sizeRight;
double? sizeTop;
double? sizeBottom;
String? idLeft;
String? idRight;
String? idTop;
String? idBottom;
XmlElement xml = XmlElement(XmlName.fromString('DRAWER')); // create a single drawer element
elements.forEach((e)
{
XmlElement x = e.copy();
String? side = x.getAttribute('side') ?? null; // determine side from each drawer in template
String? size = x.getAttribute('size') ?? null;
String? id = x.getAttribute('id') ?? null;
bool? handle = S.toBool(x.getAttribute('handle'));
if (!S.isNullOrEmpty(side))
{
XmlElement drawer = XmlElement(XmlName(side?.toUpperCase() ?? 'left'.toUpperCase())); // create a sidedrawer from template
drawer.attributes.add(XmlAttribute(XmlName.fromString('id'), id!));
// Assign ids
if (side == 'left')
{
idLeft = id;
if (handle == true) handleLeft = true;
}
else if (side == 'right')
{
idRight = id;
if (handle == true) handleRight = true;
}
else if (side == 'top')
{
idTop = id;
if (handle == true) handleTop = true;
}
else if (side == 'bottom')
{
idBottom = id;
if (handle == true) handleBottom = true;
}
// Assign sides
if (!S.isNullOrEmpty(size))
{
drawer.attributes.add(XmlAttribute(XmlName.fromString('size'), size!));
if (side == 'left') sizeLeft = S.toDouble(size);
else if (side == 'right') sizeRight = S.toDouble(size);
else if (side == 'top') sizeTop = S.toDouble(size);
else if (side == 'bottom') sizeBottom = S.toDouble(size);
}
List<XmlElement> nodes = [];
x.children.forEach((node)
{
if (node.nodeType == XmlNodeType.ELEMENT) nodes.add(node.copy() as XmlElement);
});
drawer.children.addAll(nodes);
xml.children.add(drawer);
}
else
{
Log().error('Unable to parse a drawer attributes', caller: 'drawer.Model => Model.fromXmlList()');
}
});
// Create View Model
model = DrawerModel(parent, Xml.get(node: xml, tag: 'id'), handleLeft: handleLeft, handleRight: handleRight, handleTop: handleTop, handleBottom: handleBottom, sizeLeft: sizeLeft, sizeRight: sizeRight, sizeTop: sizeTop, sizeBottom: sizeBottom, idLeft: idLeft, idRight: idRight, idTop: idTop, idBottom: idBottom);
// Deserialize
model.deserialize(xml);
}
catch(e)
{
Log().error('Unable to parse a drawer element', caller: 'drawer.Model => Model.fromXmlList()');
Log().exception(e, caller: 'drawer.Model');
model = null;
}
return model;
}