Flutter配置注解插件embedded_config_annotations的使用

Flutter配置注解插件embedded_config_annotations的使用

该包包含用于配置嵌入式配置插件(embedded_config)的代码生成的注解。

嵌入式配置插件允许在构建时将应用程序配置直接嵌入到源代码中,旨在解决不同环境需要不同配置的问题。有关更多信息,请参阅其文档。

示例

以下示例展示了如何使用嵌入式配置注解来表示一个多级配置文件。

假设配置文件如下,并且位于 lib/app_config.json

{
    "apiUrl": "/api",
    "auth": {
        "clientId": "abcd1234",
        "policies": {
          "loginSignUp": "POLICY_LOGIN_SIGN_UP",
          "passwordReset": "POLICY_PASSWORD_RESET"
        }
    }
}

可以使用以下类表示上述文件:

// 文件: lib/app_config.dart

import 'package:embedded_config_annotations/embedded_config_annotations.dart';

part 'app_config.embedded.dart';

// 创建一个类来表示配置文件的顶级。
//
// 给注解的字符串是一个键,它允许应用程序的 build.yaml 文件将各种配置源映射到此类。在此处,我们选择 `app_config` 作为键。
@EmbeddedConfig('app_config')
abstract class AppConfig {
  // 一种暴露生成的包含嵌入式配置值的类的方法。
  static const AppConfig instance = _$AppConfigEmbedded();

  String get apiUrl;

  // 可以引用另一个嵌入式配置类作为 getter,以便为利用此顶层类的代码提供更好的接口。
  //
  // 此 getter 的名称无关紧要,因为给 AppAuthConfig 类的配置值来源由其注解确定。
  AppAuthConfig get auth;

  // 嵌入式配置类必须声明一个默认的常量构造函数。
  const AppConfig();
}

// 创建一个类来表示配置文件的 `auth` 层级。
//
// 通过利用路径属性,该类可以指定从配置源读取值的位置。路径是从配置根到所需对象的配置键列表。
//
// 由于此类使用相同的键,因此 build.yaml 中的键保持不变。
@EmbeddedConfig('app_config', path: ['auth'])
abstract class AppAuthConfig {
  String get clientId;
  AppPoliciesConfig get policies;

  const AppAuthConfig();
}

// 创建一个类来表示配置文件的 `policies` 层级。
//
// 策略配置位于配置中的 `auth` 对象内,因此我们首先指定路径进入它。
@EmbeddedConfig('app_config', path: ['auth', 'policies'])
abstract class AppPoliciesConfig {
  String get loginSignUp;
  String get passwordReset;

  const AppPoliciesConfig();
}

之后,每个类使用的 app_config 键可以在 build.yaml 中映射到 JSON 配置文档:

targets:
  $default:
    builders:
      embedded_config:
        options:
          app_config: 'lib/app_config.json'

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中配置和使用embedded_config_annotations插件的示例代码案例。这个插件通常用于在Flutter应用中嵌入配置注解,以便在应用启动时读取和使用这些配置。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加embedded_config_annotations依赖。如果你还没有这个依赖,请添加如下内容:

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

然后运行flutter pub get来安装依赖。

2. 创建配置类

接下来,你需要创建一个配置类,并使用@Config注解来标记它。在这个类中,你可以定义多个配置字段,并使用@ConfigField注解来标记这些字段。

import 'package:embedded_config_annotations/embedded_config_annotations.dart';

@Config('app_config')  // 'app_config' 是配置文件的标识符或名称
class AppConfig {
  @ConfigField('api_base_url')
  String apiBaseUrl;

  @ConfigField('theme_color')
  String themeColor;

  // 你可以添加更多的配置字段
}

3. 初始化配置

在应用启动时,你需要初始化这个配置类,并从某个源(例如本地文件、网络等)加载配置数据。这里假设你从本地文件加载配置数据。

import 'package:flutter/material.dart';
import 'package:embedded_config_annotations/embedded_config_annotations.dart';
import 'dart:convert';
import 'dart:io';
import 'app_config.dart';  // 导入你创建的AppConfig类

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 假设你的配置文件是一个JSON文件
  String configFilePath = 'assets/config.json';  // 确保这个文件在你的assets目录中
  String configJson = await rootBundle.loadString(configFilePath);

  // 解析JSON到Map
  Map<String, dynamic> configMap = jsonDecode(configJson);

  // 使用ConfigLoader加载配置到AppConfig实例
  AppConfigLoader<AppConfig> configLoader = AppConfigLoader<AppConfig>();
  AppConfig appConfig = await configLoader.loadConfig(configMap);

  // 现在你可以使用appConfig中的配置了
  runApp(MyApp(appConfig: appConfig));
}

class MyApp extends StatelessWidget {
  final AppConfig appConfig;

  MyApp({required this.appConfig});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Color(int.parse(appConfig.themeColor, radix: 16)),
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Config Demo'),
        ),
        body: Center(
          child: Text('API Base URL: ${appConfig.apiBaseUrl}'),
        ),
      ),
    );
  }
}

4. 配置JSON文件

确保你的assets/config.json文件存在,并且内容类似于:

{
  "app_config": {
    "api_base_url": "https://api.example.com",
    "theme_color": "#FF0000"
  }
}

5. 更新pubspec.yaml以包含assets

pubspec.yaml中,确保你的配置文件被包含在assets中:

flutter:
  assets:
    - assets/config.json

6. 运行应用

现在你可以运行你的Flutter应用,它应该会读取配置文件中的值,并显示在UI上。

这个示例展示了如何使用embedded_config_annotations插件在Flutter应用中配置和使用注解插件。根据你的具体需求,你可能需要调整代码以适应你的应用场景。

回到顶部