未为类型“Type”定义方法“fromJson”。
尝试将名称更正为现有方法的名称,或定义名为“fromJson”的方法
下面的代码位于 Retrofit.g.dart 文件中
@override
Future<Map<String, dynamic>> signupCustomerRegistration(customerReg) async {
ArgumentError.checkNotNull(customerReg, 'customerReg');
const _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(customerReg?.toJson() ?? <String, dynamic>{});
final _result = await _dio.request<Map<String, dynamic>>(
'/api/API/CustomerSignUp',
queryParameters: queryParameters,
options: RequestOptions(
method: 'POST',
headers: <String, dynamic>{},
extra: _extra,
baseUrl: baseUrl),
data: _data);
var value = _result.data.map((k, dynamic v) =>
MapEntry(k, dynamic.fromJson(v as Map<String, dynamic>)));
return value;
}
我的模型文件代码如下:
// To parse this JSON data, do
//
// final customerReg = customerRegFromJson(jsonString);
import 'dart:convert';
import 'package:json_annotation/json_annotation.dart';
part 'CustomerRegModel.g.dart';
@JsonSerializable()
class CustomerRegModel {
CustomerRegModel({
this.custUid,
this.appname,
this.blacklist,
this.custEmail,
this.custName,
this.custPhone,
this.fcmToken,
this.password,
this.agentnin,
this.source,
this.signupDate,
this.commStartTime,
this.commEndTime,
this.commMaxValue,
this.commMinValue,
this.commDownValue,
this.walletamount,
});
String custUid;
String appname;
bool blacklist;
String custEmail;
String custName;
String custPhone;
String fcmToken;
String password;
String agentnin;
String source;
int signupDate;
int commStartTime;
int commEndTime;
int commMaxValue;
int commMinValue;
int commDownValue;
int walletamount;
factory CustomerRegModel.fromJson(Map<String, dynamic> json) => _$CustomerRegModelFromJson(json);
Map<String, dynamic> toJson() => _$CustomerRegModelToJson(this);
CustomerRegModel customerRegModelFromJson(String str) => CustomerRegModel.fromJson(json.decode(str));
String customerRegModelToJson(CustomerRegModel data) => json.encode(data.toJson());
}
尝试过:
好吧,在Github Retrofit(https://github.com/trevorwang/retrofit.dart/issues/327)中进行研究并创建问题后,他们没有回复,我去搜索将Json解析为Map并我找到了解决问题的方法。
即:
对于改装配置:-
@GET("/api/API/CustomerLogin")
Future<String> loginCustomer(@Query('id') String email_or_number,
@Query('pass') String pass, @Query('check') String check);
注意上面我使用字符串作为响应。现在我将使用 json.decode 方法将 String 转换为 Map。
final response = await client.loginCustomer(email_or_number,pass,check);
final Map<String,dynamic> map = json.decode(response);
我通过使用 code_builder 的依赖项覆盖得到了解决方案。 您不需要使用此解决方案替换 String 的 HttpResonse。
依赖覆盖: 代码生成器:^4.3.0