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

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

访问环境变量

通过合并Dart命令行参数来访问环境变量。平台环境变量优先级较低。

EnvVariables 类提供了两个静态方法来访问环境变量:

  • 一个方法始终返回一个默认值为空字符串(’’)的字符串。
  • 另一个方法在命令行和平台环境中都没有定义时返回 null

读取环境变量的顺序为:

  • Dart命令行参数 --define(或 flutter --dart-define
  • 平台环境变量
  • 给定的(可选的)默认值

示例

final String value = EnvVariables.fromEnvironment('varName'); // 默认为空字符串
final String other = EnvVariables.fromEnvironment('otherName', defaultValue: 'myValue');
final String? valueOrNull = EnvVariables.fromEnvironmentOrNull('varName'); // 默认为null

完整示例Demo

以下是一个完整的示例Demo,展示了如何使用 env_variables 插件。

示例代码

import 'package:env_variables/env_variables.dart';

void main() {
  // 从环境变量中获取值,如果没有定义则返回null
  final String? valueOrNull = EnvVariables.fromEnvironmentOrNull('varName');

  // 从环境变量中获取值,如果没有定义则返回默认值
  final String value = EnvVariables.fromEnvironment('varName', defaultValue: 'myValue');

  // 打印使用说明
  printUsage();

  // 输出获取到的值
  print('你得到了以下值:');
  print('  EnvVariables.fromEnvironmentOrNull(\'varName\') = $valueOrNull');
  print("  EnvVariables.fromEnvironment('varName', defaultValue: 'myValue') => '$value'");
}

// 打印使用说明
void printUsage() {
  print('环境变量可以通过命令行参数或平台环境变量来定义。\n');

  print('你可以通过不同的上下文来测试这个示例,例如:');
  print('\$ dart example.dart\n');
  print('\$ dart --define=varName="a value" example.dart\n');

  print('在Windows系统上:');
  print('\$ \$Env:varName = "env value"');
  print('\$ dart example.dart\n');

  print('在Linux系统上:');
  print('\$ varName="linuxEnv value" dart example.dart\n\n');
}

运行测试

为了运行测试,你需要设置环境变量。具体步骤如下:

Windows 系统

$ $Env:var2 = 'Platform Var2'
$ $Env:var3 = 'Platform Var3'
$ dart --define=var1='dartDefined Var1' --define=var2='dartDefined Var2' test

Linux 系统

$ var2='Platform Var2' var3='Platform Var3' dart --define=var1='dartDefined Var1' --define=var2='dartDefined Var2' test

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

1 回复

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


当然,以下是如何在Flutter项目中使用env_variables插件来管理环境变量的一个具体代码案例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  env_variables: ^2.0.0  # 请根据需要检查最新版本号

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

2. 创建环境配置文件

在项目的根目录下创建不同环境的配置文件。例如,创建.env.development.env.production文件。

.env.development

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

.env.production

API_URL=https://prod.example.com/api
FEATURE_FLAG_A=false

3. 配置env_variables插件

在你的Flutter项目的入口文件(通常是main.dart)中,配置env_variables插件来加载相应的环境文件。

import 'package:flutter/material.dart';
import 'package:env_variables/env_variables.dart';

void main() async {
  // 根据构建模式加载相应的环境文件
  String envFile = 'development'; // 默认开发环境
  if (bool.fromEnvironment('dart.vm.product')) {
    envFile = 'production'; // 生产环境
  }

  // 加载环境变量
  await EnvVariables.init(file: '.env.$envFile');

  // 打印一些环境变量来验证是否加载成功
  print('API URL: ${EnvVariables.get('API_URL')}');
  print('FEATURE FLAG A: ${EnvVariables.getBool('FEATURE_FLAG_A')}');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Env Variables Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Env Variables Demo'),
        ),
        body: Center(
          child: Text('Check console for printed environment variables.'),
        ),
      ),
    );
  }
}

4. 使用环境变量

在你的Flutter应用中的任何地方,你都可以使用EnvVariables.get方法来获取环境变量的值。例如:

void someFunction() {
  String apiUrl = EnvVariables.get('API_URL');
  bool featureFlagA = EnvVariables.getBool('FEATURE_FLAG_A');

  print('Using API URL: $apiUrl');
  if (featureFlagA) {
    print('Feature Flag A is enabled.');
  } else {
    print('Feature Flag A is disabled.');
  }
}

5. 构建和运行

  • 开发环境:使用flutter run命令运行应用,它会自动加载.env.development文件。
  • 生产环境:为了模拟生产环境,你可以使用flutter run --release命令,它应该加载.env.production文件(假设你已经正确配置了环境变量的加载逻辑)。

注意事项

  • 确保.env文件没有被Git跟踪(可以在.gitignore文件中添加.env.*来忽略这些文件)。
  • 在实际项目中,生产环境的配置通常是通过CI/CD流程注入的,而不是手动管理.env.production文件。

这样,你就可以在Flutter项目中使用env_variables插件来方便地管理不同环境的变量了。

回到顶部