Flutter环境变量管理插件define_env的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter环境变量管理插件define_env的使用

插件介绍

define_env 是一个用于从 .env 文件加载变量到 Dart 环境声明字符串,并将其复制到 IDE 配置或剪贴板的插件。它可以帮助开发者在开发过程中更方便地管理和配置环境变量。

安装插件

  1. 从 Pub 获取最新版本:
$ dart pub global activate define_env
  • 如果需要,可以将 pub_cache 目录添加到执行命令的路径中以简化操作。

使用示例

打印 Dart 环境声明字符串
$ define_env      # 生成 Dart 环境声明字符串并打印到 stdout
  • 可以忽略打印功能,使用 -no-print 标志:
    $ define_env --no-print
    
将 Dart 环境声明字符串复制到剪贴板
$ define_env -c      # 生成 Dart 环境声明字符串并复制到剪贴板
将 Dart 环境声明字符串传递给 CI/CD 管道
  • 对于 Doppler,可以这样做:
    dartdefines=`doppler secrets download --format=env --no-file | define_env -f -`
    flutter build apk $dartdefines
    
将 Dart 环境声明字符串复制到 IDE 配置
  • VS Code launch.json

    $ define_env -l      # 生成 Dart 环境声明字符串并复制到 launch.json
    
  • 默认情况下,所有 launch.json 配置都会更新。如果只想更新特定配置,请这样做:

    $ define_env -l -n staging     # 生成 Dart 环境声明字符串并复制到 "staging" 配置
    
  • 注意launch.json 中可能包含注释,这些注释目前无法保留。如果这很重要,请避免使用此包。

  • Android Studio

    $ define_env -a      # 生成 Dart 环境声明字符串并复制到所有运行配置
    
  • 默认情况下,所有 .idea/workspace.xml 和 .run/ 配置都会更新。如果只想更新特定配置,请这样做:

    $ define_env -a -n staging     # 生成 Dart 环境声明字符串并复制到 "staging" 配置
    
环境变量验证

你可以通过定义 define_env.yaml 或在 pubspec.yaml 中添加 define_env 部分来为环境变量添加验证。例如:

define_env:
  file_path: example
  class: MyEnv
  fields:
    FIELD_NAME:
      type: enum     # String | bool | int | enum
      default:       # 如果设置,则该字段在 env 中是可选的。
      enum: # 定义枚举可能的值。当类型为枚举时,此字段是必填项。
        values:
          - value1
          - value2
环境类生成

运行 define_env 会自动为你生成一个 Env 类,类名由 class 和文件路径定义。如果没有生成类,可以使用 --no-generate 标志:

$ define_env --no-generate     # 跳过 Env 类生成

讨论

使用 issue tracker 提交 bug 报告和功能请求。

发展路线图

  • ✅ 添加对 Android Studio 和 IntelliJ 的支持。
  • ✅ 添加验证支持,如果任何环境变量缺失则显示警告。
  • ✅ 从 .env 文件生成 Config 类,从中提取环境值。
  • ❌ 自动更新配置(如 Android Studio 和 VS Code)时,当 .env 文件更新时。
  • ❌ 直接复制配置名称来自 .env 文件。例如,.env.staging 复制到 staging 配置。
  • ❌ 简化命令使用。例如 define_env:printdefine_env:copydefine_env:vscode 等。
  • ❌ 添加标准输入支持。
  • ❌ 添加 melos 创建的配置文件支持。

示例代码

# 将 .env.example 文件复制到 .env
cp .env.example .env

# 打印 Dart 环境声明字符串
$ define_env

# 将 Dart 环境声明字符串复制到剪贴板
$ define_env -c

# 将 Dart 环境声明字符串复制到 launch.json
$ define_env -l

# 将 Dart 环境声明字符串复制到 launch.json 的指定配置
$ define_env -l -n "My App"

更多关于Flutter环境变量管理插件define_env的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter环境变量管理插件define_env的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,管理环境变量是一项重要的任务,特别是当你需要在开发、测试和生产环境之间切换配置时。define_env 是一个用于管理 Flutter 环境变量的插件。以下是如何在 Flutter 项目中使用 define_env 插件的示例代码。

步骤 1: 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 define_env 依赖:

dependencies:
  flutter:
    sdk: flutter
  define_env: ^x.y.z  # 请替换为最新版本号

然后运行 flutter pub get 以安装依赖。

步骤 2: 创建环境配置文件

在你的 Flutter 项目根目录下创建 .env 文件(注意:文件前有一个点)。这个文件将包含你的环境变量。例如:

# .env
API_URL=https://dev.example.com/api
FEATURE_FLAG_A=true

你还可以创建其他环境特定的配置文件,比如 .env.production.env.development,用于不同的环境配置。

步骤 3: 配置 pubspec.yaml 以使用 .env 文件

pubspec.yaml 中,你可以添加一个构建脚本来复制正确的 .env 文件到项目目录中。这通常通过 flutter_dotenv 插件实现(注意:虽然这里提到的是 flutter_dotenv,但 define_env 的使用方式类似,因为它也是用来读取 .env 文件的)。然而,define_env 插件本身可能不需要这一步,因为它直接读取 .env 文件。但为了完整性,这里展示如何配置构建脚本:

flutter:
  assets:
    - assets/
  # 添加以下部分(注意:这实际上可能是 flutter_dotenv 的用法,define_env 可能不需要)
  # prebuild_script: "cp .env.$(FLUTTER_BUILD_MODE) .env"

但请注意,上面的 prebuild_script 部分可能不是 define_env 插件必需的,因为 define_env 通常直接读取当前目录中的 .env 文件。

步骤 4: 使用 define_env 读取环境变量

在你的 Dart 代码中,你可以使用 define_env 插件来读取环境变量。首先,确保你已经导入了插件:

import 'package:define_env/define_env.dart';

然后,你可以使用 Env.string() 方法来读取字符串类型的环境变量,或者使用其他类型的方法(如 Env.int()Env.bool() 等)来读取相应类型的变量。例如:

void main() async {
  // 确保在应用启动时加载环境变量
  await DefineEnv().init();

  // 读取环境变量
  String apiUrl = Env.string('API_URL', defaultValue: 'https://default.example.com/api');
  bool featureFlagA = Env.bool('FEATURE_FLAG_A', defaultValue: false);

  print('API URL: $apiUrl');
  print('Feature Flag A: $featureFlagA');

  // 运行你的 Flutter 应用
  runApp(MyApp());
}

在上面的代码中,Env.string()Env.bool() 方法用于读取环境变量,并提供默认值以防变量未定义。

注意

  • 确保 .env 文件没有被添加到 .gitignore 文件中,除非你希望环境变量不被版本控制。
  • 根据你的需求,你可能需要在不同的构建配置(如 debug 和 release)中使用不同的 .env 文件。这通常可以通过在构建脚本中设置环境变量或在 IDE 中配置运行/调试配置来实现。

通过以上步骤,你应该能够在 Flutter 项目中有效地使用 define_env 插件来管理环境变量。

回到顶部