我试图比较 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)
| 归档时间: |
|
| 查看次数: |
8386 次 |
| 最近记录: |