Flutter配置管理插件angel3_configuration的使用

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

Flutter配置管理插件angel3_configuration的使用

angel3_configuration加载器

Pub Version (including pre-releases) Null Safety Gitter License

自动YAML配置加载器,适用于[Angel3框架]。

关于

任何Web应用程序在开发和生产环境中都需要不同的配置。此插件会搜索config/default.yaml文件。如果找到该文件,其配置将被加载到app.configuration中。然后,它会查找config/$ANGEL_ENV文件(例如config/development.yaml)。如果找到该文件,其所有配置将被加载,并覆盖从default.yaml文件加载的内容。这允许您的应用程序在不同条件下工作而无需重新编码。:)

安装

pubspec.yaml中:

dependencies:
    angel3_configuration: ^6.0.0

使用

示例配置:

# 定义普通的YAML对象
some_key: foo
this_is_a_map:
  a_string: "string"
  another_string: "string"

您还可以从环境加载配置:

# 从环境加载
system_path: $PATH

如果在配置目录中存在.env文件(例如config/.env),则会在应用YAML配置之前加载它。

您还可以将一个文件中的值包含到另一个文件中:

_include:
  - "./include-prod.yaml"
  - "./include-misc.yaml"
_include: "just-one-file.yaml"

服务器端

调用configuration()。加载的配置将在应用程序的configuration映射中可用。

configuration还接受sourceDirectoryoverrideEnvironmentName参数。前者允许您在config以外的目录中搜索,后者允许您通过指定要查找的特定配置名称(例如production)来覆盖$ANGEL_ENV

此包内部使用了package:angel3_merge_map,因此现有配置可以进行深度合并。

示例:

# default.yaml
foo:
  bar: baz
  quux: hello
  
# production.yaml
foo:
  quux: goodbye
  yellow: submarine
  
# 结果:
foo:
  bar: baz
  quux: goodbye
  yellow: submarine

示例代码

import 'dart:async';

import 'package:angel3_configuration/angel3_configuration.dart';
import 'package:angel3_framework/angel3_framework.dart';
import 'package:file/local.dart';

// 主函数
Future<void> main() async {
  // 创建一个新的Angel实例
  var app = Angel();
  
  // 使用本地文件系统
  var fs = const LocalFileSystem();
  
  // 配置Angel实例以使用配置加载器
  await app.configure(configuration(fs));
  
  // 此处可以添加更多的配置和路由
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用angel3_configuration插件进行配置管理的代码示例。angel3_configuration是一个用于Flutter项目的配置管理插件,它允许你从多种来源(如JSON文件、环境变量等)加载和管理应用配置。

步骤 1: 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  angel3_configuration: ^最新版本号

请确保将^最新版本号替换为实际的最新版本号。

步骤 2: 初始化配置

接下来,在你的Flutter应用中初始化AngelConfiguration。通常,你会在应用的入口文件(如main.dart)中进行这个操作。

import 'package:flutter/material.dart';
import 'package:angel3_configuration/angel3_configuration.dart';
import 'dart:convert';
import 'dart:io';

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

  // 加载配置
  var config = await AngelConfiguration.load(
    sources: [
      // 从JSON文件加载配置
      FileSource(File('assets/config.json')),
      // 也可以从环境变量加载配置(可选)
      // EnvSource()
    ],
    jsonDecoder: jsonDecode, // 使用Dart内置的JSON解码器
    logger: (message) => print(message), // 可选的日志函数
  );

  // 使用配置
  var apiUrl = config.getString('api.url');
  print('API URL: $apiUrl');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Demo Home Page'),
      ),
      body: Center(
        child: Text('Hello, Flutter!'),
      ),
    );
  }
}

步骤 3: 创建配置文件

assets文件夹中创建一个名为config.json的文件,并添加你的配置数据。例如:

{
  "api": {
    "url": "https://api.example.com"
  },
  "app": {
    "name": "Flutter Demo App",
    "version": "1.0.0"
  }
}

确保在pubspec.yaml文件中将assets/config.json添加到flutter部分的assets列表中:

flutter:
  assets:
    - assets/config.json

注意事项

  1. 异步初始化AngelConfiguration.load是一个异步操作,因此你需要在main函数中使用async/await
  2. 环境变量:如果你需要从环境变量加载配置,可以使用EnvSource。这在Flutter桌面应用或Flutter Web应用中可能更常见。
  3. 错误处理:在实际应用中,你应该添加错误处理逻辑,以处理配置加载失败的情况。

通过以上步骤,你就可以在Flutter项目中使用angel3_configuration插件来管理你的应用配置了。

回到顶部