我正在尝试使用Dio客户端进行API调用。当我收到响应时,它会抛出一个错误
“\u InternalLinkedHashMap”不是“String”类型的子类型
试图解决它,但我不能。下面是代码
Future<dynamic> get(
String uri, {
Map<String, dynamic> queryParameters,
Options options,
CancelToken cancelToken,
ProgressCallback onReceiveProgress,
}) async {
try {
final Response response = await _dio.get(
uri,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
);
return response.data;
} catch (e) {
print(e.toString());
throw e;
}
}
}
后Api调用
Future<News> getPosts() async {
try {
final res = await _dioClient.get(Endpoints.getPosts);
return News.fromJson(res);
} catch (e) {
print(e.toString());
throw e;
}
}
模型类使用内置值
abstract class News implements Built<News, NewsBuilder> {
News._();
factory News([updates(NewsBuilder b)]) = _$News;
@BuiltValueField(wireName: 'status')
String get status;
@BuiltValueField(wireName: 'totalResults')
int get totalResults;
@BuiltValueField(wireName: 'articles')
BuiltList<Articles> get articles;
String toJson() {
return json.encode(serializers.serializeWith(News.serializer, this));
}
static News fromJson(String jsonString) {
return serializers.deserializeWith(
News.serializer, json.decode(jsonString));
}
static Serializer<News> get serializer => _$newsSerializer;
}
序列化程序类
@SerializersFor([
News,
Articles,
Source,
])
final Serializers serializers = (_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
帮我怎么解决
你需要改变两件事
1) 在内置值中使用JSONSerializer而不是默认序列化器。
2)使用响应。toString()而不是dio中的数据。这里是我的一个工作示例,只需复制您需要的部分。
内建价值模型
abstract class TravelRequest implements Built<TravelRequest, TravelRequestBuilder> {
TravelRequest._();
factory TravelRequest([updates(TravelRequestBuilder b)]) = _$TravelRequest;
@nullable
@BuiltValueField(wireName: 'id')
int get id;
@nullable
@BuiltValueField(wireName: 'country_from')
String get countryFrom;
@nullable
@BuiltValueField(wireName: 'traveler_name')
String get travelerName;
@nullable
@BuiltValueField(wireName: 'traveler_email')
String get travelerEmail;
@nullable
@BuiltValueField(wireName: 'description')
String get description;
String toJson() {
return json.encode(jsonSerializers.serializeWith(TravelRequest.serializer, this));
}
static TravelRequest fromJson(String jsonString) {
return jsonSerializers.deserializeWith(TravelRequest.serializer, json.decode(jsonString));
}
static Serializer<TravelRequest> get serializer => _$travelRequestSerializer;
}
如何与Dio一起使用
Future createTravelRequest(TravelRequest travelRequest) {
return _apiProvider.dio.post(rootPath, data: travelRequest.toJson()).then((response) {
travelRequests.add(TravelRequest.fromJson(response.toString()));
});
}
我有以下错误而做ListView.builder,我只是想显示滚动列表视图,所以我从API调用对象, [屏幕截图链接] API调用结果: 这就是我的设计,帮助我解决这个错误也建议我学习颤振中不同的环结构,提前感谢。 错误: 小部件库 ╞═══════════════════════════════════════════════════════════ 引起的异常以下_TypeError被抛出构建
我对Flutter更陌生。我想从API中获取类别和产品信息。我对类别没有问题,但是当获取产品时,我得到错误"未处理的异常:类型'_InternalLinkedHashMap 我看到了许多这一错误的例子,但我无法将其与我自己联系起来。 (产品Api) (产品类别)
我是一个新手,我需要从api读取数据并存储在列表中,但我得到的错误类型“\u TypeError”不是“String”类型的子类型,请帮助我 }
我是颤振开发方面的新手。我犯了一个错误 列表不是“Iterable”类型的子类型 到目前为止,我已经做到了。 模范班 缅因州班内 } 我试图从2天开始解决这个问题。 请帮忙,谢谢。 这里是JSON响应,您可以检查链接
我有一个问题,因为2小时。我有这个错误,我看到了更多的主题,但我不能解决它。 消息:_TypeError(类型列表不是类型映射的子类型)颤动 我的模型: 我的主题屏幕: 我尝试了更多的教程和不同的主题,但我有相同的错误。。。 非常感谢。
当我试图获取数据从FIRESTAR,这个异常发生。_TypeError(类型列表不是类型字符串的子类型)我找不到问题的原因。请帮忙。