From 8d581dd25cde5752de7ad3698ed85e1455d9e9bd Mon Sep 17 00:00:00 2001 From: wuqifeng <540416539@qq.com> Date: Mon, 29 Sep 2025 23:16:52 +0800 Subject: [PATCH] feat: 给字段手写 JsonKey 的 fromJson/toJson,避免build_runner (json_serializable)无法为泛型字段 T data 自动生成代码而报错(Could not generate fromJson code for data because of type T) --- lib/common/request/api_response/api_response_entity.dart | 23 ++++++++++++++++------- lib/common/request/api_response/api_response_entity.g.dart | 36 ------------------------------------ 2 files changed, 16 insertions(+), 43 deletions(-) delete mode 100644 lib/common/request/api_response/api_response_entity.g.dart diff --git a/lib/common/request/api_response/api_response_entity.dart b/lib/common/request/api_response/api_response_entity.dart index b4d96b1..5db7bc7 100644 --- a/lib/common/request/api_response/api_response_entity.dart +++ b/lib/common/request/api_response/api_response_entity.dart @@ -1,10 +1,7 @@ import 'dart:convert'; -import 'package:json_annotation/json_annotation.dart'; - -import 'api_response_entity.g.dart'; - -@JsonSerializable(genericArgumentFactories: true) +// No json_serializable here; keep a lightweight manual model to mimic old behavior +import 'package:wow_english/generated/json/base/json_convert_content.dart'; class ApiResponse { int? code; String? msg; @@ -12,9 +9,21 @@ class ApiResponse { ApiResponse(); - factory ApiResponse.fromJson(Map json) => $ApiResponseFromJson(json); + factory ApiResponse.fromJson(Map json) { + final resp = ApiResponse(); + resp.code = jsonConvert.convert(json['code']); + resp.msg = jsonConvert.convert(json['msg']); + if (json['data'] != null) { + resp.data = JsonConvert.fromJsonAsT(json['data']); + } + return resp; + } - Map toJson() => $ApiResponseToJson(this); + Map toJson() => { + 'code': code, + 'msg': msg, + 'data': data, + }; @override String toString() { diff --git a/lib/common/request/api_response/api_response_entity.g.dart b/lib/common/request/api_response/api_response_entity.g.dart deleted file mode 100644 index 43cff1e..0000000 --- a/lib/common/request/api_response/api_response_entity.g.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:flutter/foundation.dart'; - -import '../../../generated/json/base/json_convert_content.dart'; -import 'api_response_entity.dart'; - -ApiResponse $ApiResponseFromJson(Map json) { - final ApiResponse apiResponseEntity = ApiResponse(); - final int? code = jsonConvert.convert(json['code']); - if (code != null) { - apiResponseEntity.code = code; - } - final String? msg = jsonConvert.convert(json['msg']); - if (msg != null) { - apiResponseEntity.msg = msg; - } - String type = T.toString(); - T? data; - if (kDebugMode) { - print("ApiResponse T-type:$type, data-type:${json['data'].runtimeType}"); - } - if (json['data'] != null) { - data = JsonConvert.fromJsonAsT(json['data']); - } - if (data != null) { - apiResponseEntity.data = data; - } - return apiResponseEntity; -} - -Map $ApiResponseToJson(ApiResponse entity) { - final Map data = {}; - data['code'] = entity.code; - data['msg'] = entity.msg; - data['data'] = entity.data; - return data; -} -- libgit2 0.22.2