Flutter环境变量管理插件dotenv_class_builder的使用
Flutter环境变量管理插件dotenv_class_builder的使用
dotenv_class_builder
是一个用于从 .env
变量生成 Dart 类的 Flutter 插件。
使用方法
首先,在项目的根目录下编写 build.yaml
文件,内容如下:
# build.yaml
builders:
dotenv_class_builder:
import: "package:dotenv_class_builder/dotenv_class_builder.dart"
builder_factories: ["envFileBuilder"]
auto_apply: dependents
build_to: source
build_extensions:
".env": ["lib/util/environments.g.dart"]
targets:
$default:
builders:
dotenv_class_builder:
enabled: true
generate_for:
include:
- /**.env
options:
env_file_paths:
- lib/<MY_MAGIC_ENV_FILENAME>.env
sources:
include: ["lib/**"]
接下来,在终端中运行以下命令来生成所需的 Dart 类文件:
$ flutter run build_runner build --delete-conflicting-outputs
完整示例
假设我们有一个项目结构如下:
my_flutter_project/
├── lib/
│ ├── main.dart
│ └── util/
│ └── environments.g.dart
└── .env
1. 创建 .env
文件
在项目的根目录下创建一个 .env
文件,并添加一些环境变量:
# .env
API_URL=https://api.example.com
AUTH_TOKEN=your_token_here
2. 编写 build.yaml
文件
在项目的根目录下创建或编辑 build.yaml
文件,内容如下:
# build.yaml
builders:
dotenv_class_builder:
import: "package:dotenv_class_builder/dotenv_class_builder.dart"
builder_factories: ["envFileBuilder"]
auto_apply: dependents
build_to: source
build_extensions:
".env": ["lib/util/environments.g.dart"]
targets:
$default:
builders:
dotenv_class_builder:
enabled: true
generate_for:
include:
- /**.env
options:
env_file_paths:
- .env
sources:
include: ["lib/**"]
注意:这里我们将 env_file_paths
设置为 .env
,表示要使用的环境变量文件位于项目的根目录。
3. 运行构建脚本
打开终端并导航到项目根目录,然后运行以下命令:
$ flutter run build_runner build --delete-conflicting-outputs
这将会根据 .env
文件生成一个 Dart 类文件 environments.g.dart
,该文件位于 lib/util/
目录下。
4. 使用生成的 Dart 类
在 main.dart
中,我们可以这样使用生成的 Dart 类:
import 'package:flutter/material.dart';
import 'package:my_flutter_project/util/environments.g.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo Home Page'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'API URL: ${Environments.apiUrl}',
),
Text(
'Auth Token: ${Environments.authToken}',
),
],
),
),
);
}
}
更多关于Flutter环境变量管理插件dotenv_class_builder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复