FlutterJsonBeanFactory是用来生成dart的json实体类和根据配置生成factory的idea全家桶的插件.
##注意:
如果显示“No classes that inherit JsonConvert were found”,则删除项目下的".idea"文件,然后点击你的(Andorid Studio或Idea)中的“invalidate Caches”重新启动IDE
对比其他插件优势
①:可以自定义后台返回值
使用注解@JSONField
其中name: "list"的list就是后台返回字段名称,deserialize(默认true)是否参与fromJson解析,serialize(默认true)是否参与tojson,(新版本format已移除)
②:可以解析完整字段json
比如包含如下json
可以解析出来list中map的所有字段,并且每个list的map字段不同或者为null问题有会做出处理
③可以自动生成.g.dart文件,后期修改or添加entity中的字段,只需一个快捷键(alt+j)就可以重新生成文件,并且会删除多余文件.
.g.dart文件内容
##④ 自动生成JsonConvert方便配合网络请求封装进行泛型处理
直接传递上面生成的entity就可以自动根据map解析出对应实例,并自动赋值
##⑤ 使用gif图
##⑥ 如果你想自定义怎么解析,可以在main方法里继承JsonConvert重写方法
import 'generated/json/base/json_convert_content.dart';
class MyJsonConvert extends JsonConvert {
T? asT<T extends Object?>(dynamic value) {
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(Text("OK"));
}
##⑦ 目前不支持多维数组,如果有,请使用var或者dynamic修饰
网络请求实例
dio请求部分
##⑧ 如果你遇到提示"No classes that inherit JsonConvert were found",
此时需要删除项目下”.idea”的目录,然后点击你的(andorid studio或者idea)里”invalidate caches”按钮,重启ide
安装插件
安装完后重启ide,会发现tools里多了FlutterJsonBeanFactory一个选项
在对应目录右键new,会有个dart bean class file from json,点击这个选项
在flutter项目的yaml文件里修改
之前:
environment:
sdk: ">=2.12.0 <3.0.0"
修改成:
environment:
sdk: ">=2.15.0 <3.0.0"
弹出一个输入类名和和json串的弹框,例:填入类型abc和json串
点击make按钮会生成a_b_c_entity.dart文件
这些操作完成后自动生成如下文件
@JSONField作用在Field时,其name不仅定义了输入key的名称,为了防止后台返回数据不规范,但是flutter端需要按照驼峰命名
a_b_c_entity_helper.dart类提供了eitity类的tojson和fromjson代理方法
json_convert_content.dart提供了json_convert_content.dart.fromJsonAsT方法 根据泛型来解析json成对象
引用群里老哥封装retrofit的泛型基类 [图片] 注意:针对同一个项目里包含module里(原生集成flutter也是同理)也想用这个插件生成,那么要为modul单独打开一个窗口,此插件只针对当前项目根目录下的lib目录服务