Flutter环境管理插件tarsier_env的使用

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

Flutter环境管理插件tarsier_env的使用

插件介绍

Tarsier ENV 是一个用于创建和加载 .env 文件,并生成包含环境变量静态获取器的 Dart 文件的 Flutter 插件。该插件简化了环境变量的管理,并帮助自动化访问它们的过程。

特性

  • 创建不存在的 .env 文件,并预定义键值对。
  • 加载 .env 文件并将其解析为 Map<String, String>
  • 生成一个包含环境变量静态获取器的 env.dart 文件。
  • 自动插入 import env.dartawait Env.init();main.dart 的主函数中。
  • 支持自定义 env.dart 文件路径。

安装

pubspec.yaml 文件中添加以下依赖项:

dependencies:
  tarsier_env: ^1.0.4

然后运行以下命令:

flutter pub get

使用示例

示例 1:生成默认的 .env 文件
dart run tarsier_env new

这将生成一个根目录下的 .env 文件,内容如下:

# AUTO-GENERATED FILE.
# YOU CAN EDIT/ADD MORE KEYS AND ITS VALUE.
# Generated by tarsier_env script.

APP_NAME="Tarsier"
APP_ENV=local
APP_KEY=null
APP_DEBUG=true
APP_URL=http://localhost

项目目录结构如下:

your_project_name/
├── lib/
│   └── name.dart
├── test/
├── .env  # 这是运行命令后生成的文件
├── pubspec.yaml
└── ...
示例 2:生成包含环境变量的 env.dart 文件
dart run tarsier_env generate common/environment

如果未提供路径,默认会在 lib/env.dart 中生成文件;如果提供了相对路径,则会放置在相应的子目录中。

生成的 env.dart 文件内容如下:

class Env {
  static Map<String, String> _variables = {};

  static init() async {
    _variables = await loadEnvFile('.env');
  }

  static Map<String, String> get vars =&gt; _variables;
  static String? get appName =&gt; _variables['APP_NAME'];
  static String? get appKey =&gt; _variables['APP_KEY'];
}

main.dart 中确保调用 Env.init() 方法以初始化环境变量:

import 'package:flutter/material.dart';
import 'common/environment/env.dart'; // 自动生成的导入

void main() async {
  await Env.init(); // 初始化环境变量

  String appName = Env.appName; // 可以使用生成的静态获取器
  String appKey = Env.vars['APP_KEY']; // 或者直接使用 Map 中的键

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: Env.appName ?? 'Flutter App',
      home: Scaffold(
        appBar: AppBar(
          title: Text(Env.vars['APP_NAME'] ?? 'Flutter App'),
        ),
      ),
    );
  }
}

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

1 回复

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


在Flutter项目中,tarsier_env 是一个用于环境管理的插件,它允许你根据不同的构建配置(如开发、测试、生产等)来管理不同的环境变量。下面是如何在Flutter项目中使用 tarsier_env 的具体步骤和代码示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  tarsier_env: ^最新版本号  # 替换为实际的最新版本号

然后运行 flutter pub get 来获取依赖。

2. 创建环境配置文件

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

.env.development

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

.env.production

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

3. 配置 build.yaml

build.yaml 文件中,你需要配置 tarsier_env 以识别你的环境文件:

targets:
  $default:
    builders:
      tarsier_env:
        options:
          env_files:
            - ".env.development"
            - ".env.production"

注意:这里的配置只是告诉 tarsier_env 哪些文件存在,实际的文件加载会在运行时通过代码控制。

4. 在代码中加载环境变量

在你的 Flutter 应用中,你可以通过 TarsierEnv 类来加载和使用环境变量。以下是一个简单的示例:

main.dart

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

void main() async {
  // 设置当前环境(例如:开发环境)
  await TarsierEnv.loadEnv('.env.development');

  // 或者你可以根据构建配置动态设置环境
  // if (kReleaseMode) {
  //   await TarsierEnv.loadEnv('.env.production');
  // } else {
  //   await TarsierEnv.loadEnv('.env.development');
  // }

  // 获取环境变量
  String apiUrl = TarsierEnv.env['API_URL'] ?? '默认API地址';
  bool featureFlagA = TarsierEnv.envBool('FEATURE_FLAG_A') ?? false;

  runApp(MyApp(apiUrl: apiUrl, featureFlagA: featureFlagA));
}

class MyApp extends StatelessWidget {
  final String apiUrl;
  final bool featureFlagA;

  MyApp({required this.apiUrl, required this.featureFlagA});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('环境变量示例'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('API URL: $apiUrl'),
              Text('Feature Flag A: $featureFlagA'),
            ],
          ),
        ),
      ),
    );
  }
}

5. 运行应用

现在你可以运行你的 Flutter 应用,并根据你设置的环境变量查看不同的配置效果。

flutter run --flavor development  # 如果你使用了 flavor 来区分构建配置
# 或者直接运行,如果你在代码中硬编码了环境加载逻辑
flutter run

注意

  • tarsier_env 插件的最新版本和具体用法可能会有所变化,请参考其官方文档和 pub.dev 页面获取最新信息。
  • 在实际项目中,你可能会使用 Flutter 的构建配置(如 flavorconfiguration)来更灵活地管理不同环境的构建和运行。
回到顶部