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

如何在各平台的Flutter代码中读取--flavor参数值?

在任意Flutter平台读取--flavor参数值的方案

核心思路:通过编译时注入环境变量实现跨平台读取

Flutter本身没有提供直接跨平台读取--flavor参数的API,但可以通过注入环境变量的方式,让所有Flutter支持的平台(Android、iOS、Web、Windows、macOS、Linux)都能获取到flavor名称,具体步骤如下:

1. 构建/运行时同步传递flavor值

使用--dart-define参数配合--flavor一起传递flavor标识,确保两者值一致:

# 开发环境运行命令
flutter run --flavor dev --dart-define=FLAVOR=dev

# 生产环境构建APK命令
flutter build apk --flavor prod --dart-define=FLAVOR=prod

# Web平台构建命令
flutter build web --flavor staging --dart-define=FLAVOR=staging

2. 在Flutter代码中统一读取环境变量

通过Dart内置的String.fromEnvironment方法读取注入的flavor值,该方法支持所有Flutter平台:

// 封装获取flavor的方法,设置默认值避免无注入时出错
String getCurrentFlavor() {
  return const String.fromEnvironment('FLAVOR', defaultValue: 'production');
}

// 使用示例
void main() {
  final flavor = getCurrentFlavor();
  print('当前环境: $flavor');
  
  // 根据flavor执行不同逻辑
  switch (flavor) {
    case 'dev':
      // 初始化开发环境配置
      break;
    case 'staging':
      // 初始化预发布环境配置
      break;
    default:
      // 初始化生产环境配置
      break;
  }
}

3. 简化命令的小技巧

为了避免每次输入重复的参数,可以在项目根目录创建Makefile或自定义脚本,统一管理不同flavor的命令:

# Makefile示例
run-dev:
	flutter run --flavor dev --dart-define=FLAVOR=dev

build-prod-ios:
	flutter build ios --flavor prod --dart-define=FLAVOR=prod

run-staging-web:
	flutter run -d chrome --flavor staging --dart-define=FLAVOR=staging

之后只需执行make run-dev这类简短命令,就能快速启动对应环境的项目。

补充说明

  • 这种方式的优势是完全跨平台,不需要为不同平台单独编写原生配置代码,统一通过Dart层处理即可。
  • 如果原生代码(Android/iOS)也需要使用flavor值,可以保持与Dart侧一致的环境变量注入逻辑,再通过原生方式读取(比如Android的BuildConfig、iOS的Info.plist配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:21:02