flutter_json_bean_factory 0.1.1
flutter_json_bean_factory: ^0.1.1 copied to clipboard
AI-driven CLI tool to scan Dart entities and generate serialization helpers. Cross-platform replacement for FlutterJsonBeanFactory IDE plugin.
FlutterJsonBeanFactory CLI #
🤖 AI驱动的Dart JSON序列化代码生成工具 - 基于原始 FlutterJsonBeanFactory 插件,使用AI技术重新构建的跨平台CLI工具
✨ 特性 #
- 🚀 跨平台支持 - Windows、macOS、Linux 全平台支持
- 🤖 AI驱动开发 - 使用AI技术精确复现原始插件功能
- 📦 独立CLI工具 - 无需IDE插件,支持CI/CD集成
- 🎯 精确匹配 - 与原始插件输出完全一致
- ⚡ 高性能 - 基于
package:analyzer
进行精确AST解析 - 🔧 灵活配置 - 支持
pubspec.yaml
和命令行参数配置 - 🧹 自动清理 - 智能清理过时的生成文件
🎯 与原始插件的对比 #
特性 | 原始插件 | FlutterJsonBeanFactory CLI |
---|---|---|
平台支持 | IntelliJ IDEA/Android Studio | 跨平台 (Windows/macOS/Linux) |
使用方式 | IDE插件 | 独立CLI工具 |
CI/CD集成 | ❌ | ✅ |
依赖管理 | IDE环境 | 独立Dart环境 |
配置方式 | IDE设置 | pubspec.yaml + 命令行 |
开发技术 | Kotlin | Dart + AI技术 |
📦 安装 #
方式一:全局安装(推荐) #
# 全局安装(从pub.flutter-io.cn)
dart pub global activate flutter_json_bean_factory
# 或者从GitHub安装
dart pub global activate --source git https://github.com/chdown/FlutterJsonBeanFactoryCli.git
方式二:项目依赖 #
在您的Flutter项目的 pubspec.yaml
中添加:
dev_dependencies:
flutter_json_bean_factory: ^0.1.0
🚀 使用方法 #
基本用法 #
在您的Flutter项目根目录运行:
# 自动检测项目路径
flutter_json_bean_factory
# 或指定项目路径
flutter_json_bean_factory --project /path/to/your/flutter/project
# 如果作为项目依赖使用
dart run flutter_json_bean_factory
配置选项 #
1. 通过 pubspec.yaml
配置
flutter_json:
generated_path: "generated/json" # 生成文件路径
model_suffix: "entity" # 模型文件后缀
2. 通过命令行参数
# 指定生成路径
flutter_json_bean_factory --gen-path "lib/generated/json"
# 指定模型后缀
flutter_json_bean_factory --model-suffix "model"
# 设置日志级别
flutter_json_bean_factory --log-level debug
支持的注解 #
工具会自动扫描包含以下注解的Dart类:
@JsonSerializable()
- 标记需要生成序列化代码的类@JSONField()
- 字段级别的序列化控制
示例 #
1. 创建实体类
// lib/models/user_entity.dart
import 'package:your_package_name/generated/json/base/json_field.dart';
@JsonSerializable()
class UserEntity {
late int id = 0;
late String name = '';
late String email = '';
late List<String> tags = [];
UserEntity();
factory UserEntity.fromJson(Map<String, dynamic> json) => $UserEntityFromJson(json);
Map<String, dynamic> toJson() => $UserEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
2. 运行生成命令
# 全局安装后直接使用
flutter_json_bean_factory
# 或作为项目依赖使用
dart run flutter_json_bean_factory
🔧 高级用法 #
自定义JSON转换 #
import 'package:your_package_name/generated/json/base/json_convert_content.dart';
class MyJsonConvert extends JsonConvert {
@override
T? asT<T extends Object?>(dynamic value, [T? defaultValue]) {
try {
String type = T.toString();
if (type == "DateTime") {
return DateFormat("dd.MM.yyyy").parse(value) as T;
} else {
return super.asT<T>(value);
}
} catch (e, stackTrace) {
print('asT<$T> $e $stackTrace');
return null;
}
}
}
Future<void> main() async {
jsonConvert = MyJsonConvert();
runApp(MyApp());
}
CI/CD集成 #
GitHub Actions
name: Generate JSON Models
on: [push, pull_request]
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
flutter-version: '3.16.0'
- name: Install dependencies
run: flutter pub get
- name: Generate JSON models
run: flutter_json_bean_factory
- name: Check for changes
run: git diff --exit-code
Jenkins
pipeline {
agent any
stages {
stage('Generate Models') {
steps {
sh 'flutter pub get'
sh 'flutter_json_bean_factory'
}
}
}
}
📋 命令行参数 #
Usage: flutter_json_bean_factory [options]
Options:
-p, --project <path> Flutter项目路径 (默认: 当前目录)
-g, --gen-path <path> 生成文件路径 (默认: generated/json)
-s, --model-suffix <suffix> 模型文件后缀 (默认: entity)
-l, --log-level <level> 日志级别: debug, info, warn, error (默认: info)
-i, --incremental 启用增量模式 (默认: true)
-f, --force 强制重新生成所有文件
-h, --help 显示帮助信息
⚡ 性能优化 #
增量模式 #
- 多重验证缓存 - 结合文件修改时间和内容哈希值,确保缓存准确性
- 依赖关系跟踪 - 监控注解文件变更,自动重新解析相关文件
- 快速跳过 - 未修改的文件直接使用缓存,避免重复解析
- 缓存位置 - 缓存文件保存在
.dart_tool/fjbf_cache.json
并行处理 #
- 多线程扫描 - 并行处理多个Dart文件
- 并行生成 - 同时生成多个实体文件
- 异步I/O - 异步文件读写操作
缓存机制详解 #
多重验证策略
- 文件修改时间 - 快速初步检查
- 内容哈希值 - 确保文件内容真正未变
- 依赖关系检查 - 监控注解文件变更
缓存失效条件
- 文件修改时间发生变化
- 文件内容哈希值不匹配
- 依赖的注解文件发生变更
- 缓存文件损坏或格式错误
性能提升
- 首次运行 - 与原始插件性能相当
- 增量运行 - 速度提升 3-5倍
- 大型项目 - 在包含数百个实体的大型项目中效果显著
- 误判率 - 接近0%,多重验证确保准确性
🤖 AI技术亮点 #
本项目使用AI技术精确复现了原始插件的所有功能:
- 智能代码分析 - 使用
package:analyzer
进行精确的AST解析 - 模式识别 - AI驱动的注解识别和类结构分析
- 代码生成 - 基于模板的智能代码生成,确保与原始插件输出完全一致
- 依赖解析 - 自动识别和添加必要的import语句
- 类型推断 - 智能处理泛型、嵌套类型和复杂数据结构
🆚 与原始插件的兼容性 #
功能 | 原始插件 | CLI工具 | 状态 |
---|---|---|---|
@JsonSerializable 注解 |
✅ | ✅ | ✅ 完全兼容 |
@JSONField 注解 |
✅ | ✅ | ✅ 完全兼容 |
生成 json_field.dart |
✅ | ✅ | ✅ 完全兼容 |
生成 json_convert_content.dart |
✅ | ✅ | ✅ 完全兼容 |
生成 *.g.dart 文件 |
✅ | ✅ | ✅ 完全兼容 |
copyWith 扩展 |
✅ | ✅ | ✅ 完全兼容 |
空类处理 | ✅ | ✅ | ✅ 完全兼容 |
嵌套类型支持 | ✅ | ✅ | ✅ 完全兼容 |
泛型支持 | ✅ | ✅ | ✅ 完全兼容 |
🐛 故障排除 #
常见问题 #
-
"No classes that inherit JsonConvert were found"
- 确保您的类包含
@JsonSerializable()
注解 - 检查文件路径是否正确
- 确保您的类包含
-
生成的文件格式不正确
- 删除
.idea
目录并重启IDE - 运行
flutter clean
然后重新生成
- 删除
-
依赖冲突
- 确保使用独立的Dart环境运行CLI工具
- 避免在Flutter项目中作为path dependency使用
📄 许可证 #
本项目基于 Apache-2.0 许可证开源。
🙏 致谢 #
本项目基于 FlutterJsonBeanFactory 插件开发
🤝 贡献 #
欢迎提交 Issue 和 Pull Request!
📞 支持 #
如果您觉得这个项目有用,请:
- ⭐ 给项目点个星
- 🐛 报告问题
- 💡 提出建议
- 🤝 参与贡献
🤖 由AI技术驱动,为Flutter开发者提供更好的开发体验!