You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发中如何比较两个应用版本号的大小?

Flutter 版本号大小判断方案

方案1:自定义实现(无第三方依赖)

对于标准的x.y.z纯数字格式版本号,拆分后逐位比较即可实现,适配位数不一致的场景(比如1.1和1.0.1):

工具函数实现

/// 比较两个版本号大小
/// 返回值说明:
/// - `1`:v1 大于 v2
/// - `0`:v1 等于 v2
/// - `-1`:v1 小于 v2
int compareVersion(String v1, String v2) {
  List<int> v1List = v1.split('.').map(int.parse).toList();
  List<int> v2List = v2.split('.').map(int.parse).toList();
  int maxLen = v1List.length > v2List.length ? v1List.length : v2List.length;
  
  for (int i = 0; i < maxLen; i++) {
    // 位数不足的位置补0
    int num1 = i < v1List.length ? v1List[i] : 0;
    int num2 = i < v2List.length ? v2List[i] : 0;
    if (num1 > num2) return 1;
    if (num1 < num2) return -1;
  }
  return 0;
}

使用示例

final v1 = "1.0.0";
final v2 = "1.0.1";

int res = compareVersion(v1, v2);
if (res < 0) {
  print("v1 版本更低");
} else if (res > 0) {
  print("v1 版本更高");
} else {
  print("两个版本相同");
}

上述示例运行会输出v1 版本更低。

注意:该实现默认版本号为纯数字格式,若存在非数字字符(如beta、alpha后缀)需要自行扩展逻辑,同时可以添加try-catch处理格式异常。

方案2:第三方包实现(适配复杂版本规则)

如果需要处理带预发布标签、构建号的标准语义化版本(比如1.0.0-beta.2、1.0.0+20240501),可以直接使用pub平台的version包,内置支持运算符直接比较:

import 'package:version/version.dart';

final v1 = Version.parse("1.0.0");
final v2 = Version.parse("1.0.1");

print(v1 < v2); // 输出 true
print(v1 > v2); // 输出 false

内容的提问来源于stack exchange,提问作者Coder Addy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:36:05