fconfigproxy 0.0.4
fconfigproxy: ^0.0.4 copied to clipboard
A Flutter package for configuring proxy with annotation support and code generation.
fconfigproxy #
fconfigproxy 是一个强大的 Flutter 配置代理框架,通过注解和代码生成自动实现配置项的本地持久化、变更通知和多端同步功能。它提供了统一的配置管理接口,支持多种存储实现,并允许灵活扩展。
功能特性 #
- 注解驱动开发:通过简单的注解声明配置项,自动生成代理代码
- 多存储后端:内置支持 Hive、MMKV 等存储方式,可轻松扩展自定义存储
- 响应式更新:集成 ValueNotifier,可自行扩展其他通知机制,配置变更时自动通知 UI 更新
- 行为扩展:支持方法拦截、自定义处理逻辑和配置验证
- 跨平台兼容:完全支持 Android、iOS、Web、Windows、macOS 和 Linux
- 代码优化:自动生成高效的配置访问代码,减少样板代码
快速开始 #
1. 添加依赖 #
在你的 pubspec.yaml 中添加:
dependencies:
fconfigproxy: ^0.0.2
fconfigproxy_hive_storage: ^0.0.1
# 或/和
fconfigproxy_mmkv_storage: ^0.0.1
dev_dependencies:
build_runner: ^2.8.0
source_gen: ^4.0.1
jinja: ^0.6.4
copied to clipboard
2. 声明配置接口 #
创建一个配置接口类,使用 @FConfig 注解标记,并为每个配置项添加 @FConfigKey 注解:
import 'package:fconfigproxy/annotation/FConfig.dart';
import 'package:fconfigproxy/annotation/FConfigKey.dart';
// 参数1: 配置名称,参数2: 存储代理类
@FConfig('app_config', HiveConfigStorageImpl)
abstract class AppConfig {
// 配置用户令牌,自定义键名为 'user_token'
@FConfigKey(keyName: 'user_token')
String? userToken;
// 配置是否首次打开应用,默认值为 false
@FConfigKey(defaultValue: 'false')
abstract bool isFirstOpen;
// 配置用户年龄
@FConfigKey(keyName: 'user_age')
int? userAge;
factory AppConfig.getAppConfig() => _$GetAppConfig();
}
copied to clipboard
3. 运行代码生成 #
在项目根目录执行以下命令生成代码:
flutter pub run build_runner build --delete-conflicting-outputs
copied to clipboard
4. 初始化配置 #
在应用入口处初始化配置:
import 'package:flutter/material.dart';
import 'AppConfig.dart';
void main() async {
Hive.init('存储路径');//hive需要在初始化配置之前调用传入存储路径,否则会报错
await AppConfig.getAppConfig().initAppConfig();
runApp(MyApp(config: config));
}
copied to clipboard
5. 使用配置代理 #
AppConfig.getAppConfig().userToken = 'new_token_${DateTime.now().millisecondsSinceEpoch}';
AppConfig.getAppConfig().isFirstOpen = false;
AppConfig.getAppConfig().userAge = 30;
print(AppConfig.getAppConfig().userToken);
print(AppConfig.getAppConfig().isFirstOpen);
print(AppConfig.getAppConfig().userAge);
copied to clipboard
进阶用法 #
1. 监听配置变更 #
使用 ValueNotifier 监听配置变更:
@FConfig('app_config', HiveConfigStorageImpl)
abstract class AppConfig {
// 配置项...
@FConfigValueNotifier() // 指定使用ValueNotifier监听配置
@FConfigKey(keyName: "userToken")// 监听userToken配置项
abstract final ValueNotifier<String?> userTokenNotifier;
}
//使用
AppConfig.getAppConfig().userTokenNotifier.addListener(() {
print('userToken changed: ${AppConfig.getAppConfig().userTokenNotifier.value}');
});
copied to clipboard
2. 扩展存储后端 #
创建自定义存储实现:
class MyCustomStorage implements FConfigKeyValueHandle {
// 实现所有必要的方法...
@override
Future<void> init([String? boxName]) async {
// 初始化自定义存储
}
// ... 其他方法实现 ...
}
copied to clipboard
示例 #
请参考 example/ 目录下的完整示例,包括:
- 基本配置使用
- 多存储后端切换
- 配置变更监听
- 自定义方法拦截
常见问题 #
1. 如何解决代码生成失败的问题? #
- 确保所有依赖包已正确安装:
flutter pub get - 尝试使用
--delete-conflicting-outputs参数重新运行构建:flutter pub run build_runner build --delete-conflicting-outputs - 检查注解是否正确使用,特别是配置名称和代理类是否存在
2. 如何实现配置加密? #
fconfigproxy 本身不提供加密功能,但可以通过自定义存储代理实现加密。在自定义存储代理中,对配置项进行加密存储,读取时解密。
贡献与反馈 #
欢迎提交 issue、PR 和建议!如果你有任何问题或需要帮助,请在 GitHub 仓库中提出。
许可证 #
本项目采用 MIT 许可证,详情请见 LICENSE 文件。
了解更多详细 API 说明和高级用法,请查阅源码注释或访问项目 GitHub 页面。