flutter 插件 FlutterJsonBeanFactory 使用,继承类如何写?

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;
  }
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容