建议先将Flutter官方文档过一遍,本系列教程 Flutter SDK >= 3.10.0
考虑篇幅长度,这里将分成几片文章
一、如何快速创建实体类
1.1 idea 插件方式
Android Studio 安装FlutterJsonBeanFactory
lib/generated
这个目录专门来存放该生成的实体类,使用方式:右键该文件夹-> 新建->JsonToDartBeanAction
Class Name
: 实体类名,大驼峰形式Lhdht
JSON Text
: 实体类结构体JSON,注意json结构体最后一个不要加,
, 否则无法make
null-able
: 空安全copyWith
: (PS:不知道是啥,有知道的朋有评论区说说)defalut value
: 允许默认值- make 创建
将该文件lib/generated/lhdht_entity.dart
移入到lib/model/entity
目录下
1.2 工具网站
这个相对简单,将json复制到这里面就会生成
二、创建基本的实体类(idea方式创建)
这里使用idea方式创建实体类
2.1 基础响应实体类
通过idea方式创建实体类BaseResponse
,并将lib/generated/base_response_entity.dart
移入到 lib/model/response/
目录下,然后需要对这两个文件进行改造,代码如下:
lib/model/response/base_response_entity.dart
import 'package:lhdht_flutter_app/generated/json/base/json_field.dart';
import 'package:lhdht_flutter_app/generated/json/base/json_convert_content.dart';
import 'package:lhdht_flutter_app/generated/json/base_response_entity.g.dart';
import 'dart:convert';
()
class BaseResponseEntity<D> {
String? message;
D? data;
BaseResponseEntity();
BaseResponseEntity.fromJson(Map<String, dynamic> json) {
if (json['data'] != null && json['data'] != 'null') {
data = JsonConvert.fromJsonAsT<D>(json['data']);
}
message = json["message"];
}
Map<String, dynamic> toJson() => $BaseResponseEntityToJson(this);
String toString() {
return jsonEncode(this);
}
}
lib/generated/json/base_response_entity.g.dart
import 'package:lhdht_flutter_app/generated/json/base/json_convert_content.dart';
import 'package:lhdht_flutter_app/model/response/base_response_entity.dart';
BaseResponseEntity $BaseResponseEntityFromJson<D>(Map<String, dynamic> json) {
final BaseResponseEntity baseResponseEntity = BaseResponseEntity();
final String? message = jsonConvert.convert<String>(json['message']);
if (message != null) {
baseResponseEntity.message = message;
}
final D? data = jsonConvert.convert<D>(json['data']);
if (data != null) {
baseResponseEntity.data = data;
}
return baseResponseEntity;
}
Map<String, dynamic> $BaseResponseEntityToJson(BaseResponseEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['message'] = entity.message;
data['data'] = entity.data?.toJSON();
return data;
}
2.2 基础列表响应实体类
通过idea方式创建实体类ListResponse
,并将lib/generated/list_response_entity.dart
移入到 lib/model/response/
目录下,然后需要对这两个文件进行改造,代码如下:
lib/model/response/list_response_entity.dart
import 'package:lhdht_flutter_app/generated/json/base/json_field.dart';
import 'package:lhdht_flutter_app/generated/json/base/json_convert_content.dart';
import 'package:lhdht_flutter_app/generated/json/list_response_entity.g.dart';
import 'dart:convert';
()
class ListResponseEntity<D> {
D? list;
int? total;
ListResponseEntity();
ListResponseEntity.fromJson(Map<String, dynamic> json) {
if (json['list'] != null && json['list'] != 'null') {
list = JsonConvert.fromJsonAsT<D>(json['list']);
}
total = json["total"];
}
Map<String, dynamic> toJson() => $ListResponseEntityToJson(this);
String toString() {
return jsonEncode(this);
}
}
lib/generated/json/list_response_entity.g.dart
import 'package:lhdht_flutter_app/generated/json/base/json_convert_content.dart';
import 'package:lhdht_flutter_app/model/response/list_response_entity.dart';
ListResponseEntity $ListResponseEntityFromJson<D>(Map<String, dynamic> json) {
final ListResponseEntity listResponseEntity = ListResponseEntity();
final D? list = jsonConvert.convert<D>(json['list']);
if (list != null) {
listResponseEntity.list = list;
}
final int? total = jsonConvert.convert<int>(json['total']);
if (total != null) {
listResponseEntity.total = total;
}
return listResponseEntity;
}
Map<String, dynamic> $ListResponseEntityToJson(ListResponseEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['list'] = entity.list.toJson();
data['total'] = entity.total;
return data;
}
2.3 基础分页请求实体类
通过idea方式创建实体类BasePageRequest
,并将lib/generated/base_page_request.dart
移入到 lib/model/response/
目录下
2.4 创建测试列表项实体类
通过idea方式创建实体类Item
,并将lib/generated/item_request.dart
移入到 lib/model/entity/
目录下