Flutter Dart 版本号比较方法

18 min read
import 'dart:math';
bool compareVersion(String version1, String version2) {
    List<String> version1Array = version1.split(".");
    List<String> version2Array = version2.split(".");
    int index = 0;
    int minLen = min(version1Array.length, version2Array.length);
    int diff = 0;
    while (index < minLen) {
      diff = int.parse(version1Array[index]) - int.parse(version2Array[index]);
      if (diff == 0) {
        index++;
      } else {
        break;
      }
    }
    if (diff == 0) {
      for (int i = index; i < version1Array.length; i++) {
        if (int.parse(version1Array[i]) > 0) {
          return true;
        }
      }
      for (int i = index; i < version2Array.length; i++) {
        if (int.parse(version2Array[i]) > 0) {
          return false;
        }
      }
      return false;
    } else {
      return diff > 0;
    }
  }

void main() {
  print(compareVersion("1.1.0","1.2.1"));  // 10
}