parse method

Future<DrawableRoot> parse()

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!;
}