parse method
Drive the XmlTextReader to EOF and produce a DrawableRoot.
Implementation
Future<DrawableRoot> parse() async {
_compatibilityTester = _SvgCompatibilityTester();
for (XmlEvent event in _readSubtree()) {
if (event is XmlStartElementEvent) {
if (startElement(event)) {
continue;
}
final _ParseFunc? parseFunc = _svgElementParsers[event.name];
await parseFunc?.call(this, _warningsAsErrors);
if (parseFunc == null) {
if (!event.isSelfClosing) {
_discardSubtree();
}
assert(() {
unhandledElement(event);
return true;
}());
}
} else if (event is XmlEndElementEvent) {
endElement(event);
}
}
if (_root == null) {
throw StateError('Invalid SVG data');
}
return _root!;
}