compareTo method

  1. @override
int compareTo(
  1. Version other
)
override

Compares this object to another object.

Returns a value like a Comparator when comparing this to other. That is, it returns a negative integer if this is ordered before other, a positive integer if this is ordered after other, and zero if this and other are ordered together.

The other argument must be a value that is comparable to this object.

Implementation

@override
int compareTo(Version other) {
  List<int> versionParts =
      version.split(".").map((part) => int.parse(part)).toList();
  List<int> otherParts =
      other.version.split(".").map((part) => int.parse(part)).toList();

  int numberOfParts = max(versionParts.length, otherParts.length);

  for (var index = 0; index < numberOfParts; index++) {
    int versionPart = index < versionParts.length ? versionParts[index] : 0;
    int otherPart = index < otherParts.length ? otherParts[index] : 0;

    if (versionPart < otherPart) {
      return -1;
    }

    if (versionPart > otherPart) {
      return 1;
    }
  }

  return 0;
}