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 回复

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


dotenv_class_builder 是一个用于管理 Flutter 项目中的环境变量的插件。它允许你从 .env 文件中加载环境变量,并生成一个 Dart 类来访问这些变量。这样可以避免在代码中硬编码敏感信息,并且可以方便地管理不同的环境配置。

以下是使用 dotenv_class_builder 插件的步骤:

1. 添加依赖项

首先,在 pubspec.yaml 文件中添加 dotenv_class_builderdotenv 的依赖项:

dependencies:
  flutter:
    sdk: flutter
  dotenv: ^5.0.0

dev_dependencies:
  build_runner: ^2.1.0
  dotenv_class_builder: ^1.0.0

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

2. 创建 .env 文件

在项目的根目录下创建一个 .env 文件,并在其中定义你的环境变量。例如:

API_KEY=your_api_key
BASE_URL=https://api.example.com
DEBUG=true

3. 创建 Env

lib 目录下创建一个 env.dart 文件,并定义 Env 类。这个类将由 dotenv_class_builder 插件自动生成。

import 'package:dotenv_class_builder/dotenv_class_builder.dart';

part 'env.g.dart';

@DotEnvGen()
class Env extends _$Env {
  Env([String? path]) : super(path);
}

4. 生成代码

运行以下命令来生成 Env 类的代码:

flutter pub run build_runner build

这将生成一个 env.g.dart 文件,其中包含了从 .env 文件中加载的环境变量的 getter 方法。

5. 使用 Env

在你的 Flutter 应用程序中,你可以使用 Env 类来访问环境变量。例如:

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

void main() {
  final env = Env();
  runApp(MyApp(env: env));
}

class MyApp extends StatelessWidget {
  final Env env;

  MyApp({required this.env});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Demo Home Page'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('API Key: ${env.apiKey}'),
              Text('Base URL: ${env.baseUrl}'),
              Text('Debug Mode: ${env.debug}'),
            ],
          ),
        ),
      ),
    );
  }
}

6. 加载 .env 文件

在你的应用程序启动时,确保加载 .env 文件。你可以在 main 函数中调用 env.load() 方法:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final env = Env();
  await env.load();
  runApp(MyApp(env: env));
}

7. 配置 .gitignore

确保将 .env 文件添加到 .gitignore 中,以避免将敏感信息提交到版本控制系统:

.env
回到顶部