1.安装插件
安装FlutterJsonBeanFactory插件

image.png
第一次使用,需要json自动生成一次,然后才可以手动创建实体类

image.png

image.png
{
"id": 123,
"name": "李四"
}
完成第一次json创建实体,插件会自动生成generated目录,一般是在你项目的lib文件夹中
1.如果你不想用json来生成实体,也可以使用手动创建的实体类,类名需要注解@JsonSerializable(),这个注解是 插件生成的(也就是我们首次使用json生成的时候才有的)
位于generated,base,json_field文件中,需要引入

image.png
2.创建好所有的属性后,注意使用?来修饰可以为null的属性
3.需要写一个空的构造函数

image.png
4.然后alt+insert

image.png
5.鼠标放到generated文件夹上,使用alt+j,快速生成fromJson和toJson方法

image.png
6.引入generated的包既可

image.png
FlutterJsonBeanFactory 不支持继承的实体类,如果手动写了一个实体类并集成了某个实体基类,那就需要自己手动写fromJson和toJson,比如
// 基类
class Person {
final String name;
final int age;
Person({required this.name, required this.age});
// 基类的 fromJson 方法
factory Person.fromJson(Map<String, dynamic> json) {
return Person(
name: json['name'],
age: json['age'],
);
}
// 基类的 toJson 方法
Map<String, dynamic> toJson() {
return {
'name': name,
'age': age,
};
}
}
// 子类
class Student extends Person {
final String school;
Student({required String name, required int age, required this.school})
: super(name: name, age: age);
// 子类的 fromJson 方法,使用基类的 fromJson 方法,基类的属性都要写,可以去基类复制过来
factory Student.fromJson(Map<String, dynamic> json) {
return Student(
name: json['name'],
age: json['age'],
school: json['school'],
);
}
// 子类的 toJson 方法,调用基类的 toJson 方法,这里直接final json = super.toJson(),在赋值
@override
Map<String, dynamic> toJson() {
final json = super.toJson();
json['school'] = school;
return json;
}
}