Flutter配置管理插件config_builder的使用

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

Flutter配置管理插件config_builder的使用

插件介绍

config_builder 是一个用于通过代码生成从 .json 文件构建应用配置的插件。它支持类型安全,并且在应用启动时无需进行不必要的 IO/解析。

特性

  • 避免将配置存储在 Dart 文件中。
  • 避免在应用启动时从磁盘读取并解析配置文件。
  • 类型安全。
  • 支持 String, bool, int, double 和枚举类型。

使用方法

  1. 添加到 devDependencies 中(示例):

    dev_dependencies:
      build_runner: <version>
      config_builder: <version>
    
  2. 定义配置模型:

    part 'config.g.dart'; // 使用与该 Dart 文件同名的 <filename>.g.dart
    
    [@BuildConfiguration](/user/BuildConfiguration)([
      ConfigFile(configName: "devConfig", path: "lib/secrets/config.dev.json"),
      ConfigFile(configName: "testConfig", path: "lib/secrets/config.test.json"),
    ])
    class Config {
      final String name;
      final int value;
      final Environment environment;
    
      const Config({this.name, this.value, this.environment});
    }
    
  3. 确保配置类具有一个 const 构造函数,参数名称唯一。 生成的代码会假设这样的构造函数存在。

  4. 添加您的配置 JSON 文件(必须保存在 lib/ 目录中:

    {
      "name": "devApp",
      "value": 1,
      "environment": "Dev"
    }
    
  5. 运行代码生成:

    flutter packages pub run build_runner build
    

    或者

    pub run build_runner build
    
  6. 现在可以在应用程序的不同入口点访问配置对象:

    main.dev.dart:
    ```dart
    import 'config.dart';
    
    void main() => printConfig(devConfig);
    
    main.test.dart:
    ```dart
    import 'config.dart';
    
    void main() => printConfig(testConfig);
    

示例代码

import 'package:config_builder_example/config.dart';
import 'package:config_builder_example/do_stuff_with_config.dart';

void main(){
  // 运行 'flutter packages pub run build_runner build' 来生成代码
  final Config config = prodConfig;
  printConfig(config);
}

完整示例 demo

// config.g.dart
part 'config.g.dart';

[@BuildConfiguration](/user/BuildConfiguration)([
  ConfigFile(configName: "devConfig", path: "lib/secrets/config.dev.json"),
  ConfigFile(configName: "testConfig", path: "lib/secrets/config.test.json"),
])
class Config {
  final String name;
  final int value;
  final Environment environment;

  const Config({this.name, this.value, this.environment});
}

// config.dev.json
{
  "name": "devApp",
  "value": 1,
  "environment": "Dev"
}

// config.test.json
{
  "name": "testApp",
  "value": 2,
  "environment": "Test"
}

// main.dev.dart
import 'config.dart';

void main() => printConfig(devConfig);

// main.test.dart
import 'config.dart';

void main() => printConfig(testConfig);

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用config_builder插件进行配置管理的示例。config_builder插件允许你从JSON文件生成Dart类,便于在Flutter应用中管理配置。

步骤 1: 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  config_builder: ^latest_version  # 请替换为最新版本号

dev_dependencies:
  build_runner: ^latest_version  # 请替换为最新版本号

步骤 2: 创建配置文件

在项目的assets目录下创建一个名为config.json的文件,并添加一些配置信息:

{
  "api_base_url": "https://api.example.com",
  "app_name": "My Flutter App",
  "theme": {
    "primary_color": "#FF0000",
    "accent_color": "#00FF00"
  }
}

别忘了在pubspec.yaml中声明这个JSON文件为资源:

flutter:
  assets:
    - assets/config.json

步骤 3: 生成配置类

在项目根目录下运行以下命令来生成配置类:

flutter pub run build_runner build

这将在你的项目中生成一个名为config.g.dart的文件,包含从config.json生成的Dart类。

步骤 4: 使用生成的配置类

现在你可以在你的Flutter应用中使用这个生成的配置类。以下是一个示例:

import 'package:flutter/material.dart';
import 'package:your_app_name/config.g.dart' as config;  // 替换为你的实际包名

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: config.Config.appName,  // 使用生成的配置
      theme: ThemeData(
        primarySwatch: Color(int.parse(config.Config.theme!.primaryColor!.substring(1), radix: 16)),
        accentColor: Color(int.parse(config.Config.theme!.accentColor!.substring(1), radix: 16)),
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text(config.Config.appName),
        ),
        body: Center(
          child: Text('API Base URL: ${config.Config.apiBaseUrl}'),
        ),
      ),
    );
  }
}

注意事项

  1. JSON格式:确保你的config.json文件格式正确,否则config_builder在生成代码时会报错。
  2. 热重载:生成的config.g.dart文件在每次运行flutter pub run build_runner build时都会更新,因此如果你修改了config.json,记得重新运行这个命令。
  3. 错误处理:在实际应用中,你可能需要添加一些错误处理逻辑,比如检查配置是否为空或格式是否正确。

通过上述步骤,你就可以在Flutter项目中成功地使用config_builder插件进行配置管理了。

回到顶部