compareVersions static method
Compares two dotted versions numerically ("1.10.0" > "1.9.3"); a build suffix ("+12") breaks ties. Returns <0, 0 or >0 like Comparable.compareTo.
Implementation
static int compareVersions(String a, String b) {
List<int> parts(String v) => v.split(RegExp(r"[.+\-]")).map((String p) => int.tryParse(RegExp(r"\d+").firstMatch(p)?.group(0) ?? "") ?? 0).toList();
final List<int> x = parts(a);
final List<int> y = parts(b);
for (int i = 0; i < x.length || i < y.length; i++) {
final int d = (i < x.length ? x[i] : 0) - (i < y.length ? y[i] : 0);
if (d != 0) return d;
}
return 0;
}