Flutter配置管理插件built_config的使用

Flutter配置管理插件built_config的使用

简介

built_config 是一个类型安全的配置生成器,适用于 Flutter 应用。它允许开发者为不同的构建环境(例如开发环境、生产环境等)定义和管理配置。

使用方法

示例代码

以下是一个简单的示例,展示了如何使用 built_config 插件来管理不同环境下的配置。

import 'package:built_config/built_config.dart';

// 定义默认配置值
part 'built_config_example.g.dart';

class Environment {
  final DefaultConfigValues _defaultConfigValues = DefaultConfigValues();
  final ProdConfigValues _prodConfigValues = ProdConfigValues();
}

// 覆盖默认值以适应生产环境
@BuiltConfigOptions(outputJson: true, jsonFileName: 'prod')
abstract class ProdConfigValues extends DefaultConfigValues implements BuiltConfig {
  factory ProdConfigValues() = _$ProdConfigValues;

  ProdConfigValues._() : super._();

  @override
  @BuiltConfigField(
    defaultValue: 4,
    allValues: [4, 5],
    wireName: 'myInt',
  )
  int get sampleInt;
}

// 默认配置值
@BuiltConfigOptions(outputJson: true, jsonFileName: 'default')
abstract class DefaultConfigValues implements BuiltConfig {
  factory DefaultConfigValues() = _$DefaultConfigValues;

  DefaultConfigValues._();

  Future<void> initialize() async {}

  Future<void> dispose() async {}

  @override
  bool? getBool(String key) => null;

  @override
  double? getDouble(String key) => null;

  @override
  int? getInt(String key) => null;

  @override
  String? getString(String key) => null;

  @BuiltConfigField(
    defaultValue: 1,
    allValues: [1, 2],
    wireName: 'myInt',
  )
  int get sampleInt;

  @BuiltConfigField(defaultValue: 'myString', description: '')
  String get sampleString;

  @BuiltConfigField(defaultValue: true)
  bool get sampleBool;

  @BuiltConfigField(defaultValue: 1.1123, wireName: 'doubleValue')
  double get sampleDouble;

  String get otherField {
    return 'SomeValue';
  }
}

详细说明

  1. 导入库
    import 'package:built_config/built_config.dart';
    

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

1 回复

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


built_config 是一个用于 Flutter 和 Dart 应用的配置管理插件,它可以帮助你轻松地管理和加载应用的配置。built_config 使用 built_value 来生成类型安全的配置类,并且支持从 JSON、YAML 等格式加载配置。

安装

首先,你需要在 pubspec.yaml 中添加 built_configbuilt_value 依赖:

dependencies:
  flutter:
    sdk: flutter
  built_config: ^1.0.0

dev_dependencies:
  build_runner: ^2.1.0
  built_value_generator: ^8.0.0

创建配置类

接下来,你需要创建一个配置类。这个类将使用 built_value 来生成类型安全的代码。

import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';

part 'config.g.dart';

abstract class AppConfig implements Built<AppConfig, AppConfigBuilder> {
  String get apiUrl;
  int get timeout;

  AppConfig._();
  factory AppConfig([void Function(AppConfigBuilder) updates]) = _$AppConfig;

  static Serializer<AppConfig> get serializer => _$appConfigSerializer;
}

生成代码

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

flutter pub run build_runner build

这将生成 config.g.dart 文件,其中包含 AppConfig 的实现。

加载配置

你可以使用 built_config 来加载配置文件。假设你有一个 config.json 文件:

{
  "apiUrl": "https://api.example.com",
  "timeout": 30
}

你可以使用以下代码来加载配置:

import 'dart:convert';
import 'package:built_config/built_config.dart';
import 'config.dart';

void main() async {
  final configJson = await DefaultAssetBundle.of(context).loadString('assets/config.json');
  final config = serializers.deserializeWith(
    AppConfig.serializer,
    json.decode(configJson),
  ) as AppConfig;

  print('API URL: ${config.apiUrl}');
  print('Timeout: ${config.timeout}');
}

使用配置

现在你可以在应用中使用 config 对象来访问配置值:

void fetchData() {
  final url = config.apiUrl;
  final timeout = config.timeout;

  // 使用配置值进行网络请求等操作
}
回到顶部