Flutter Model类定义
2025-09-25 00:26
Flutter
4
0
0
0
标题录入
封面图
在 Flutter 中,**Model 类**通常用于表示应用中的数据模型。它是一个简单的 Dart 类,用于封装数据和业务逻辑(如解析 JSON、验证等)。Model 类通常与 `json_serializable` 和 `freezed` 等库一起使用来简化数据的序列化和不可变对象的创建。 --- ## ✅ 一、基本 Model 类定义 ```dart class User { final String name; final int age; User({required this.name, required this.age}); // 可以添加一个 fromJson 方法 factory User.fromJson(Map<String, dynamic> json) { return User( name: json['name'] as String, age: json['age'] as int, ); } // 可以添加一个 toJson 方法 Map<String, dynamic> toJson() { return { 'name': name, 'age': age, }; } } ``` ### 使用示例: ```dart void main() { var user = User(name: "Alice", age: 25); print(user.name); // Alice var json = user.toJson(); print(json); // {name: Alice, age: 25} var userFromJson = User.fromJson(json); print(userFromJson.name); // Alice } ``` --- ## ✅ 二、使用 `json_serializable` 自动生成 `fromJson` 和 `toJson` 为了减少重复代码,推荐使用 `json_serializable` 库来自动生成 `fromJson` 和 `toJson` 方法。 ### 步骤: 1. 添加依赖到 `pubspec.yaml`: ```yaml dev_dependencies: build_runner: ^2.3.0 json_serializable: ^6.5.4 ``` 2. 定义 Model 类并加上注解: ```dart import 'package:json_annotation/json_annotation.dart'; part 'user.g.dart'; @JsonSerializable() class User { final String name; final int age; User({required this.name, required this.age}); factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); Map<String, dynamic> toJson() => _$UserToJson(this); } ``` 3. 运行生成代码: ```bash flutter pub get flutter pub run build_runner build ``` 这会自动生成 `user.g.dart` 文件,包含 `fromJson` 和 `toJson` 方法。 --- ## ✅ 三、使用 `freezed` 创建不可变 Model 类 `freezed` 是一个强大的库,可以让你用更简洁的方式定义不可变的数据类,并支持 `toJson`、`fromJson`、`copyWith` 等功能。 ### 步骤: 1. 添加依赖: ```yaml dependencies: freezed_annotation: ^2.1.0 dev_dependencies: build_runner: ^2.3.0 ``` 2. 定义 Model 类: ```dart import 'package:freezed_annotation/freezed_annotation.dart'; part 'user.freezed.dart'; part 'user.g.dart'; @freezed class User with _$User { const factory User({ required String name, required int age, }) = _User; factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); } ``` 3. 运行生成代码: ```bash flutter pub get flutter pub run build_runner build ``` --- ## ✅ 四、总结 | 工具/方法 | 特点 | |----------|------| | 原生 Dart | 简单但需要手动写 `fromJson` / `toJson` | | `json_serializable` | 自动生成 `fromJson` / `toJson`,适合大型项目 | | `freezed` | 更加现代、简洁,支持不可变对象、`copyWith`、`toString` 等 | --- 如果你有特定的模型结构或需求(比如嵌套对象、列表、枚举等),我可以帮你写出对应的 Model 类。欢迎继续提问!
上一篇:
React AI 编程助手安装
标题录入,一次不能超过6条
蝴蝶效应
T:0.006811s,M:117.59 KB
返回顶部
留言
留言
评论