compareVersions function

int compareVersions(
  1. String v1,
  2. String v2
)

Implementation

int compareVersions(String v1, String v2) {
  // Remove suffixes like -dev, -beta, -alpha, -rc, etc.
  final String cleanV1 = _cleanVersionString(v1);
  final String cleanV2 = _cleanVersionString(v2);

  final List<int> v1Parts = cleanV1.split('.').map((e) => int.tryParse(e) ?? 0).toList();
  final List<int> v2Parts = cleanV2.split('.').map((e) => int.tryParse(e) ?? 0).toList();

  final int maxLength = v1Parts.length > v2Parts.length ? v1Parts.length : v2Parts.length;

  for (int i = 0; i < maxLength; i++) {
    final int v1Part = i < v1Parts.length ? v1Parts[i] : 0;
    final int v2Part = i < v2Parts.length ? v2Parts[i] : 0;
    // print('Comparing parts:');
    // print(v1Part);
    // print(v2Part);

    if (v1Part > v2Part) {
      // print('v1 is greater');
      return 1; // v1 is greater
    } else if (v1Part < v2Part) {
      // print('v2 is greater');
      return -1; // v1 is smaller
    }
  }

  return 0; // versions are equal
}