flutter_json_bean_factory 0.1.1 copy "flutter_json_bean_factory: ^0.1.1" to clipboard
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 #

License Dart Flutter

🤖 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 - 异步文件读写操作

缓存机制详解 #

多重验证策略

  1. 文件修改时间 - 快速初步检查
  2. 内容哈希值 - 确保文件内容真正未变
  3. 依赖关系检查 - 监控注解文件变更

缓存失效条件

  • 文件修改时间发生变化
  • 文件内容哈希值不匹配
  • 依赖的注解文件发生变更
  • 缓存文件损坏或格式错误

性能提升

  • 首次运行 - 与原始插件性能相当
  • 增量运行 - 速度提升 3-5倍
  • 大型项目 - 在包含数百个实体的大型项目中效果显著
  • 误判率 - 接近0%,多重验证确保准确性

🤖 AI技术亮点 #

本项目使用AI技术精确复现了原始插件的所有功能:

  • 智能代码分析 - 使用 package:analyzer 进行精确的AST解析
  • 模式识别 - AI驱动的注解识别和类结构分析
  • 代码生成 - 基于模板的智能代码生成,确保与原始插件输出完全一致
  • 依赖解析 - 自动识别和添加必要的import语句
  • 类型推断 - 智能处理泛型、嵌套类型和复杂数据结构

🆚 与原始插件的兼容性 #

功能 原始插件 CLI工具 状态
@JsonSerializable 注解 ✅ 完全兼容
@JSONField 注解 ✅ 完全兼容
生成 json_field.dart ✅ 完全兼容
生成 json_convert_content.dart ✅ 完全兼容
生成 *.g.dart 文件 ✅ 完全兼容
copyWith 扩展 ✅ 完全兼容
空类处理 ✅ 完全兼容
嵌套类型支持 ✅ 完全兼容
泛型支持 ✅ 完全兼容

🐛 故障排除 #

常见问题 #

  1. "No classes that inherit JsonConvert were found"

    • 确保您的类包含 @JsonSerializable() 注解
    • 检查文件路径是否正确
  2. 生成的文件格式不正确

    • 删除 .idea 目录并重启IDE
    • 运行 flutter clean 然后重新生成
  3. 依赖冲突

    • 确保使用独立的Dart环境运行CLI工具
    • 避免在Flutter项目中作为path dependency使用

📄 许可证 #

本项目基于 Apache-2.0 许可证开源。

🙏 致谢 #

本项目基于 FlutterJsonBeanFactory 插件开发

🤝 贡献 #

欢迎提交 Issue 和 Pull Request!

📞 支持 #

如果您觉得这个项目有用,请:

  • ⭐ 给项目点个星
  • 🐛 报告问题
  • 💡 提出建议
  • 🤝 参与贡献

🤖 由AI技术驱动,为Flutter开发者提供更好的开发体验!

0
likes
125
points
51
downloads

Publisher

unverified uploader

Weekly Downloads

AI-driven CLI tool to scan Dart entities and generate serialization helpers. Cross-platform replacement for FlutterJsonBeanFactory IDE plugin.

Repository (GitHub)
View/report issues

Topics

#flutter #dart #json #serialization #flutter-json-bean-factory

Documentation

API reference

License

unknown (license)

Dependencies

analyzer, args, code_builder, collection, dart_style, path, yaml

More

Packages that depend on flutter_json_bean_factory