gpt4 book ai didi

flutter - BuiltValue 不是类型 'BuiltRegister' 错误的子类型

转载 作者:IT王子 更新时间:2023-10-29 06:55:41 29 4
gpt4 key购买 nike

我刚刚学习如何在 flutter 中使用 BuiltValue。在使用这个库之前,我使用 Chopper 实现的网络服务工作正常。

现在更改为使用 BuiltValue 后出现错误,我无法解决此问题

错误是:

_InternalLinkedHashMap' is not a subtype of type 'BuiltRegister'

我的服务器只得到 mobile_number 这是 json 响应结构:

{
"message": "",
"userInformation": {
"active": 1,
"name": "",
"email": "aaaa@gmail.com",
"avatar": "",
"mobile_number": "5656565656",
"teammate": 0,
"experience": null,
"age": 44,
"gender": 0,
"height": 555,
"weight": 80400,
"insurance": null,
"job": "dddddd",
"created_at": "2019-06-23 09:26:41",
"updated_at": "2019-08-26 17:51:24",
"api_token": "5QbgyBdcL"
},
"tickets": [
{
"id": 3,
"subject": "3",
"description": "3",
"ticket_number": 5273,
"priority": 1,
"section": 1,
"solved": 0,
"created_at": "2019-06-23 09:26:41",
"updated_at": "2019-08-26 17:51:24",
"user": {
"active": 1,
"name": "",
"email": "aaaa@gmail.com",
"avatar": "",
"mobile_number": "5656565656",
"teammate": 0,
"experience": null,
"age": 44,
"gender": 0,
"height": 555,
"weight": 80400,
"insurance": null,
"job": "dddddd",
"created_at": "2019-06-23 09:26:41",
"updated_at": "2019-08-26 17:51:24",
"api_token": "5QbgyBdcL"
},
"reply": [
{
"ticket_id": 3,
"reply": "5050505050505050050505005",
"created_at": "2019-06-23 09:26:41",
"updated_at": "2019-08-26 17:51:24",
"user": {
"active": 1,
"name": "",
"email": "aaaa@gmail.com",
"avatar": "",
"mobile_number": "5656565656",
"teammate": 0,
"experience": null,
"age": 44,
"gender": 0,
"height": 555,
"weight": 80400,
"insurance": null,
"job": "dddddd",
"created_at": "2019-06-23 09:26:41",
"updated_at": "2019-08-26 17:51:24",
"api_token": "5QbgyBdcL"
}
}
]
}
],
"status": 5
}

我构建BuiltRegister注册结构:

part 'built_register.g.dart';

abstract class BuiltRegister implements Built<BuiltRegister, BuiltRegisterBuilder> {
//@formatter:off
String get mobile_number;
@nullable String get message;
@nullable BuiltUser get userInformation;
@nullable int get status;
@nullable BuiltList<BuiltTickets> get tickets;
//@formatter:on

BuiltRegister._();

factory BuiltRegister([updates(BuiltRegisterBuilder b)]) = _$BuiltRegister;

static Serializer<BuiltRegister> get serializer => _$builtRegisterSerializer;
}

abstract class BuiltUser implements Built<BuiltUser, BuiltUserBuilder> {
//@formatter:off
String get mobile_number;
String get active;
@nullable String get name;
@nullable String get email;
@nullable String get avatar;
@nullable String get teammate;
@nullable String get experience;
@nullable String get age;
@nullable String get gender;
@nullable String get height;
@nullable String get weight;
@nullable String get insurance;
@nullable String get job;
String get created_at;
String get updated_at;
String get api_token;
//@formatter:on

BuiltUser._();

factory BuiltUser([updates(BuiltUserBuilder b)]) = _$BuiltUser;

static Serializer<BuiltUser> get serializer => _$builtUserSerializer;
}

abstract class BuiltTickets implements Built<BuiltTickets, BuiltTicketsBuilder> {
//@formatter:off
int get id;
String get subject;
String get description;
int get ticket_number;
int get priority;
int get section;
int get solved;
String get created_at;
String get updated_at;
BuiltUser get user;
@nullable BuiltReply get reply;
//@formatter:on

BuiltTickets._();

factory BuiltTickets([updates(BuiltTicketsBuilder b)]) = _$BuiltTickets;

static Serializer<BuiltTickets> get serializer => _$builtTicketsSerializer;
}

abstract class BuiltReply implements Built<BuiltReply, BuiltReplyBuilder> {
//@formatter:off
int get ticket_id;
String get reply;
String get created_at;
String get updated_at;
BuiltUser get user;
//@formatter:on

BuiltReply._();

factory BuiltReply([updates(BuiltReplyBuilder b)]) = _$BuiltReply;

static Serializer<BuiltReply> get serializer => _$builtReplySerializer;
}

build 命令在终端返回成功,我没有任何问题,现在这是我的 Chopper 实现:

part 'api_service.chopper.dart';

@ChopperApi(baseUrl: '/api/v1')
abstract class DiabetistApiService extends ChopperService {
@Post(path: '/register')
Future<Response<BuiltRegister>> registerUser(@Body() BuiltRegister body);

static DiabetistApiService create() {
final client = ChopperClient(
baseUrl: 'http://www.example.com',
services: [
_$DiabetistApiService(),
],
converter: BuiltValueConvert(),
interceptors: [
HeadersInterceptor({'Content-Type': 'application/json'}),
HttpLoggingInterceptor(),
(Response response) async {
if (response.statusCode == 404) {
chopperLogger.severe('404 NOT FOUND');
}
}
]);
return _$DiabetistApiService(client);
}
}
Chopper

BuiltValueConvert 拦截器实现:

class BuiltValueConvert extends JsonConverter {
@override
Request convertRequest(Request request) {
//@formatter:off
return super
.convertRequest(
request.replace(
body: serializers.serializeWith(
serializers.serializerForType(
request.body.runtimeType), request.body
)
)
);
//@formatter:on
}

@override
Response<BodyType> convertResponse<BodyType, singleItemType>(Response response,) {
final Response dynamicResponse = super.convertResponse(response);
final BodyType customBody = _convertToCustomObject(dynamicResponse.body);

return dynamicResponse.replace<BodyType>(body: customBody);
}

dynamic _convertToCustomObject<SingleItemType>(dynamic element) {
if (element is SingleItemType) return element;

if (element is List)
return _deserializerListOf<SingleItemType>(element);
else
return _deserialize<SingleItemType>(element);
}

BuiltList<SingleItemType> _deserializerListOf<SingleItemType>(List dynamicList) {
return BuiltList<SingleItemType>(
dynamicList.map((element) => _deserialize<SingleItemType>(element))
);
}

SingleItemType _deserialize<SingleItemType>(Map<String, dynamic> value) {
return serializers.deserializeWith(serializers.serializerForType(SingleItemType), value);
}
}

这就是我要如何连接到服务器、发送和获取结果:

final register = BuiltRegister((b) => b..mobile_number = mobileNumber);
final response = await Provider.of<DiabetistApiService>(context).registerUser(register);

当我尝试打印响应时出现错误

最佳答案

问题解决!!!

我变了

convertResponse<BodyType, singleItemType> 

convertResponse<BodyType, SingleItemType>

关于flutter - BuiltValue 不是类型 'BuiltRegister' 错误的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57659828/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com