Flutter环境配置插件envied_flutter的使用

Flutter环境配置插件envied_flutter的使用

ENVied

Pub

Dart/Flutter中处理环境变量的一种更干净的方法。

(受到Envify的极大启发)


目录 #


概述 #

使用.env文件,例如:

KEY=VALUE

或者系统环境变量,例如:

export VAR=test

以及一个Dart类:

import 'package:envied_flutter/envied.dart';

part 'env.g.dart';

@Envied()
abstract class Env {
    [@EnviedField](/user/EnviedField)(varName: 'KEY')
    static const key = _Env.key;
}

Envied会使用build_runner生成部分文件,其中包含从你的.env文件中获取的值。

你可以通过Env类访问环境变量:

print(Env.key); // "VALUE"

安装 #

添加enviedenvied_generator作为依赖项。

如果你正在创建一个Flutter项目:

$ flutter pub add envied
$ flutter pub add --dev envied_generator
$ flutter pub add --dev build_runner

如果你正在创建一个Dart项目:

$ dart pub add envied
$ dart pub add --dev envied_generator
$ dart pub add --dev build_runner

这将安装三个包:

  • build_runner,用于运行代码生成器的工具
  • envied_generator,代码生成器
  • envied,包含注解的包

使用 #

在项目的根目录下添加一个.env文件。如果文件名不是.env,你可以在Envied类中指定其他名称,例如.env.dev

KEY1=VALUE1
KEY2=VALUE2

创建一个类来摄入环境变量(lib/env/env.dart)。在类上添加Envied注释,并对任何你想从.env文件中拉取的环境变量添加EnviedField注释。

重要!将`.env`和`env.g.dart`文件添加到你的`.gitignore`文件中,否则可能会暴露你的环境变量。

// lib/env/env.dart
import 'package:envied_flutter/envied.dart';

part 'env.g.dart';

@Envied(path: '.env.dev')
abstract class Env {
    [@EnviedField](/user/EnviedField)(varName: 'KEY1')
    static const key1 = _Env.key1;

    [@EnviedField](/user/EnviedField)()
    static const KEY2 = _Env.KEY2;

    [@EnviedField](/user/EnviedField)(defaultValue: 'test_')
    static const key3 = _Env.key3;
}

然后运行生成器:

# dart
dart run build_runner build
# flutter
flutter pub run build_runner build

你可以通过Env类访问环境变量:

print(Env.key1); // "VALUE1"
print(Env.KEY2); // "VALUE2"

混淆 #

在EnviedField中添加混淆标志:

[@EnviedField](/user/EnviedField)(obfuscate: true)

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

1 回复

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


envied_flutter 是一个 Flutter 插件,用于在 Flutter 项目中管理和加载环境变量。它通过生成代码来访问环境变量,从而避免了在代码中硬编码敏感信息(如 API 密钥、数据库凭据等)。使用 envied_flutter 可以提高代码的安全性和可维护性。

以下是使用 envied_flutter 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 envied_flutterenvied_generator 作为依赖项。

dependencies:
  flutter:
    sdk: flutter
  envied_flutter: ^0.3.0+5

dev_dependencies:
  flutter_test:
    sdk: flutter
  envied_generator: ^0.3.0+5

2. 创建 .env 文件

在项目的根目录下创建一个 .env 文件,用于存储环境变量。例如:

API_KEY=your_api_key_here
DEBUG_MODE=true
DATABASE_URL=your_database_url_here

3. 创建 Env

lib 目录下创建一个 env.dart 文件,并定义一个 Env 类。这个类将用于访问环境变量。

import 'package:envied/envied.dart';

part 'env.g.dart';

@Envied(path: '.env')
abstract class Env {
  @EnviedField(varName: 'API_KEY')
  static const String apiKey = _Env.apiKey;

  @EnviedField(varName: 'DEBUG_MODE')
  static const bool debugMode = _Env.debugMode;

  @EnviedField(varName: 'DATABASE_URL')
  static const String databaseUrl = _Env.databaseUrl;
}

4. 生成代码

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

flutter pub run build_runner build

这将生成一个 env.g.dart 文件,其中包含了从 .env 文件中读取的环境变量。

5. 使用环境变量

现在你可以在项目中使用生成的 Env 类来访问环境变量。例如:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Envied Flutter Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Envied Flutter Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text('API Key: ${Env.apiKey}'),
              Text('Debug Mode: ${Env.debugMode}'),
              Text('Database URL: ${Env.databaseUrl}'),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部