Flutter代码生成插件envy_generator的使用

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

Flutter代码生成插件envy_generator的使用

欢迎来到envy_generator,这是一个用于提取环境变量的代码生成器。

安装

要使用envy_generator,你需要设置一个典型的build_runner/代码生成器。首先,将以下依赖项添加到你的pubspec.yaml文件中:

如果你在Flutter项目中使用:

$ flutter pub add envy_annotation
$ flutter pub add --dev build_runner
$ flutter pub add --dev envy_generator

如果你在Dart项目中使用:

$ dart pub add envy_annotation
$ dart pub add --dev build_runner
$ dart pub add --dev envy_generator

这将安装三个包:

  • build_runner,这是运行代码生成器的工具。
  • envy_generator,这是代码生成器本身。
  • envy_annotation,包含为envy_generator使用的注解。

运行生成器

要运行代码生成器,请执行以下命令:

dart run build_runner build

对于Flutter项目,你也可以运行:

flutter pub run build_runner build

注意,像大多数代码生成器一样,envy_generator需要你在文件顶部导入注解(envy_annotation)并使用part关键字。

因此,要使用envy_generator的文件应该从以下内容开始:

import 'package:envy_annotation/envy_annotation.dart';

part 'config.e.dart';

使用envy_generator创建配置模型

以下是一个典型的envy类的示例:

// 这个文件名为 "config.dart"
import 'package:envy_annotation/envy_annotation.dart';

// 必须:关联我们的 `config.dart` 与由envy生成的代码
part 'config.e.dart';

@envy
class Config {
  @variable
  static String apiBaseUrl = _Envy.apiBaseUrl;

  @variable
  static String get apiUrl => _Envy.apiUrl;

  @variable
  static bool get devMode => _Envy.devMode;

  @variable
  static int get threadsCount => _Envy.threadsCount;

  @variable
  static double get similarityDistanceThreshold =>
      _Envy.similarityDistanceThreshold;

  @variable
  static String? get missingOne => _Envy.missingOne;

  static String get testVar => 'test';
}

.env 文件的内容如下:

# 这个文件名为 ".env"
API_BASE_URL=https://my.api
API_URL=$API_BASE_URL/guest/json-rpc

DEV_MODE=TRUE

THREADS_COUNT=3

SIMILARITY_DISTANCE_THRESHOLD=0.2

更多关于Flutter代码生成插件envy_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码生成插件envy_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用Flutter代码生成插件envy_generator的示例。这个插件通常用于从.env文件中生成Dart代码,从而方便地在Flutter应用中管理环境变量。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加envybuild_runner依赖。envy用于解析.env文件,而build_runner用于运行代码生成任务。

dependencies:
  flutter:
    sdk: flutter
  envy: ^x.y.z  # 替换为最新版本号

dev_dependencies:
  build_runner: ^x.y.z  # 替换为最新版本号

步骤 2: 创建.env文件

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

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

步骤 3: 生成代码

pubspec.yaml文件中,添加一个build.yaml配置文件的引用,用于配置envy_generator。然后创建一个build.yaml文件:

pubspec.yaml

# ... 其他配置 ...

flutter:
  # ... 其他配置 ...

  # 添加以下行以包含build配置
  generate: true

build.yaml

targets:
  $default:
    builders:
      envy_generator:envy:
        generate_for:
          - lib/env/**.dart
        options:
          input_file: .env

接下来,使用build_runner生成代码:

flutter pub run build_runner build --delete-conflicting-outputs

步骤 4: 使用生成的代码

envy_generator会在lib/env/目录下生成一个env_config.dart文件(或其他你配置的文件名)。你可以在你的Flutter应用中导入并使用这个文件。

例如,生成的env_config.dart可能看起来像这样:

// This is a generated file. Do not edit.
class EnvConfig {
  static const String apiUrl = 'https://api.example.com';
  static const bool featureFlagA = true;
}

在你的Flutter应用中,你可以这样使用:

import 'package:your_app/env/env_config.dart';

void main() {
  print('API URL: ${EnvConfig.apiUrl}');
  print('Feature Flag A: ${EnvConfig.featureFlagA}');
  
  runApp(MyApp());
}

完整示例结构

your_flutter_app/
├── lib/
│   ├── env/
│   │   └── env_config.g.dart  // 自动生成的文件
│   ├── main.dart
├── .env
├── pubspec.yaml
├── build.yaml

请确保替换x.y.z为实际的插件版本号,并根据你的项目结构调整文件路径。这样,你就成功地在Flutter项目中集成了envy_generator并使用了它。

回到顶部