如何在 Flutter 中比较两个应用程序版本?

Cod*_*ddy 8 dart flutter

我试图比较 Flutter 中的两个应用程序版本:

final v1 = "1.0.0";
final v2 = "1.0.1";
Run Code Online (Sandbox Code Playgroud)

我如何声明哪个版本比另一个版本大?

gen*_*ser 24

将它们作为整数进行比较!

一个很酷的解决方案是将每个版本转换为指数整数,以便我们可以简单地将它们作为整数进行比较!

void main() {
  String v1 = '1.2.3', v2 = '1.2.11';
  int v1Number = getExtendedVersionNumber(v1); // return 102003
  int v2Number = getExtendedVersionNumber(v2); // return 102011
  print(v1Number >= v2Number);
}

int getExtendedVersionNumber(String version) {
  List versionCells = version.split('.');
  versionCells = versionCells.map((i) => int.parse(i)).toList();
  return versionCells[0] * 100000 + versionCells[1] * 1000 + versionCells[2];
}
Run Code Online (Sandbox Code Playgroud)

在 Dartpad 上查看这个正在运行的示例


Asq*_*e17 12

由于版本号和修订号可以超过 9。我们经常有“1.13.11”、“211.74.23”等版本号。解决方案是拆分并比较各个数字。

 String a = "1.39.2";
 String b = "1.38.14"; 
 bool isVersionGreaterThan(String newVersion, String currentVersion){
   List<String> currentV = currentVersion.split(".");
   List<String> newV = newVersion.split(".");
   bool a = false;
   for (var i = 0 ; i <= 2; i++){
     a = int.parse(newV[i]) > int.parse(currentV[i]);
     if(int.parse(newV[i]) != int.parse(currentV[i])) break;
   }
   return a;
 }
  print(isVersionGreaterThan(a,b));
Run Code Online (Sandbox Code Playgroud)


Vic*_*khe 10

使用pub.dev 中的版本

关于这个包的一些信息

A dart library providing a Version object for comparing and incrementing version numbers in compliance with the Semantic Versioning spec at [http://semver.org/][2]

您可以使用此代码来比较并执行您的任务

Version latestVersion = Version.parse("1.5.1");

if (latestVersion > Version.parse(1.3.0))
    _newUpdateDialog(); // your function here
Run Code Online (Sandbox Code Playgroud)