parseFloatWithUnits method
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));
}