使用 freezed 包生成不可变的 Dart 类,支持联合类型和模式匹配等高级功能。适用于需要高级功能的复杂应用。
点击选择JSON文件或拖拽文件到此处
支持.json文件,最大1MB
输入您想要的Dart类名,如User、Product等
粘贴您的JSON数据或点击"加载示例"查看示例
点击"生成Dart代码"按钮,生成的代码将出现在这里
将提供的依赖添加到pubspec.yaml并运行构建命令
生成的freezed风格代码将类似于:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'user.freezed.dart';
part 'user.g.dart';
@freezed
class User with _$User {
const factory User({
required int id,
required String name,
required String email,
}) = _User;
factory User.fromJson(Map<String, dynamic> json) =>
_$UserFromJson(json);
}
Freezed 是 Dart 生态系统中最强大的不可变数据类生成器,它结合了函数式编程理念与现代 Flutter 开发最佳实践。 通过自动生成 copyWith、toString、equality 等方法,Freezed 为大型 Flutter 应用提供了类型安全、性能优异的数据模型解决方案。
企业级应用、复杂业务逻辑、微服务架构数据层
BLoC、Riverpod、GetX 等状态管理框架的完美搭档
不可变数据结构、副作用控制、函数式响应式编程
数据加载中的状态表示
成功获取数据的状态
错误处理和异常状态
零运行时开销
编译期错误检测
IDE 重构支持
单元测试便利
Freezed 提供不可变数据类、自动生成 copyWith 方法、支持联合类型和模式匹配。 它是函数式编程在 Flutter 中的最佳实践,特别适合状态管理框架如 BLoC、Riverpod。 Freezed 生成的类完全不可变,避免了副作用,提高了代码的可预测性和测试性。
联合类型允许一个变量表示多种可能的状态,如 Loading、Success、Error。 使用 sealed class 和 when 方法进行模式匹配,确保处理所有可能的情况。 这种方式在状态管理中非常有用,能够优雅地处理异步操作的不同状态,避免空指针异常。
copyWith 方法允许你创建对象的副本,同时修改部分属性。由于 Freezed 类是不可变的, 任何修改都会返回新的实例。例如:user.copyWith(name: 'New Name')
。 这种模式在状态更新时非常有用,保持数据不可变性的同时提供便捷的更新方式。
Freezed 在编译时生成所有代码,运行时无额外开销。不可变对象可以安全地在多线程间共享, 减少了内存分配和垃圾回收压力。虽然 copyWith 会创建新对象,但对于 Flutter 的响应式架构来说, 这种模式实际上能提高整体性能和内存使用效率。