parseFloatWithUnits method

double parseFloatWithUnits([
  1. String? string
])

Implementation

double parseFloatWithUnits([String? string]) {
  if (string == null) {
    return 0;
  }

  String theUnit = 'px';
  for (int i = 0, n = units.length; i < n; i++) {
    final u = units[i];

    if (string!.endsWith(u)) {
      theUnit = u;
      string = string.substring(0, string.length - u.length);
      break;
    }
  }


  double scale;

  if (theUnit == 'px' && defaultUnit != SVGUnits.px) {
    // Conversion scale from  pixels to inches, then to default units
    scale = unitConversion["in"]![defaultUnit.name]! / defaultDPI;
  }
  else {
    scale = unitConversion[theUnit]![defaultUnit.name]!.toDouble();

    if (scale < 0) {
      // Conversion scale to pixels
      scale = unitConversion[theUnit]!['in']! * defaultDPI.toDouble();
    }
  }

  String str = "$string";
  List<String> strs = str.split(".");

  if (strs.length >= 3) {
    strs = strs.sublist(0, 2);
    str = strs.join(".");
  }

  return scale * (str.contains('#')?int.parse(str.replaceAll('#', ''),radix: 16 ):num.parse(str));
}