parseDashArray method

CircularIntervalList<double>? parseDashArray()

Parses an @stroke-dasharray attribute into a CircularIntervalList.

Does not currently support percentages.

Implementation

CircularIntervalList<double>? parseDashArray() {
  final String? rawDashArray = getAttribute(attributes, 'stroke-dasharray');
  if (rawDashArray == '') {
    return null;
  } else if (rawDashArray == 'none') {
    return DrawableStyle.emptyDashArray;
  }

  final List<String> parts = rawDashArray!.split(RegExp(r'[ ,]+'));
  final List<double> doubles = <double>[];
  bool atLeastOneNonZeroDash = false;
  for (final String part in parts) {
    final double dashOffset = parseDoubleWithUnits(part)!;
    if (dashOffset != 0) {
      atLeastOneNonZeroDash = true;
    }
    doubles.add(dashOffset);
  }
  if (doubles.isEmpty || !atLeastOneNonZeroDash) {
    return null;
  }
  return CircularIntervalList<double>(doubles);
}