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

Flutter应用运行时能否获取构建所用的Flutter SDK版本?

实现方案

这里提供两种可靠的实现方式,都适配Xcode手动编译、fvm命令行构建等所有场景:

方式1:直接调用Flutter内置API(推荐,无需额外配置)

Flutter 3.10及以上版本已内置构建时SDK版本的暴露能力,直接调用原生API即可获取:

import 'dart:ui';

void getBuildFlutterVersion() {
  // 获取完整的版本信息,包含版本号、构建渠道、提交哈希等
  String fullVersionInfo = PlatformDispatcher.instance.flutterVersion.string;
  // 仅获取语义化版本号,例如 3.22.2
  String sdkVersion = PlatformDispatcher.instance.flutterVersion.version;
  // 获取引擎提交哈希
  String engineRevision = PlatformDispatcher.instance.flutterVersion.engineRevision;
}

该方法返回的是编译时所用的Flutter SDK的固定版本信息,和运行环境无关,完全可以用来验证构建版本的正确性。

方式2:通过编译参数注入(适配3.10以下的低版本Flutter)

如果你的项目使用的Flutter版本低于3.10,可以通过编译时注入常量的方式实现:

  1. 首先在Dart代码中定义接收常量:
const flutterSdkVersion = String.fromEnvironment('FLUTTER_BUILD_VERSION', defaultValue: '未知版本');
  1. 命令行构建时直接通过fvm命令注入版本:
fvm flutter build ios --dart-define=FLUTTER_BUILD_VERSION=$(fvm flutter --version | head -n1 | awk '{print $2}')
  1. Xcode手动编译场景配置:
    打开iOS项目的Runner.xcconfig文件,添加如下配置,即可在Xcode编译时自动获取当前目录绑定的fvm版本注入:
FLUTTER_BUILD_VERSION = $(cd ${SRCROOT}/.. && fvm flutter --version | head -n1 | awk '{print $2}')
// 在已有的DART_DEFINES配置后追加
DART_DEFINES = $(DART_DEFINES) FLUTTER_BUILD_VERSION=$(FLUTTER_BUILD_VERSION)

验证方法:构建前执行 fvm flutter --version 查看当前目录绑定的SDK版本,和运行时获取到的版本对比一致即代表构建版本正确。

内容的提问来源于stack exchange,提问作者Mr D。

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:27:04