Flutter环境管理插件tarsier_env的使用
Flutter环境管理插件tarsier_env的使用
插件介绍
Tarsier ENV 是一个用于创建和加载 .env
文件,并生成包含环境变量静态获取器的 Dart 文件的 Flutter 插件。该插件简化了环境变量的管理,并帮助自动化访问它们的过程。
特性
- 创建不存在的
.env
文件,并预定义键值对。 - 加载
.env
文件并将其解析为Map<String, String>
。 - 生成一个包含环境变量静态获取器的
env.dart
文件。 - 自动插入
import env.dart
和await 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 => _variables;
static String? get appName => _variables['APP_NAME'];
static String? get appKey => _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
更多关于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 的构建配置(如
flavor
和configuration
)来更灵活地管理不同环境的构建和运行。