【发布时间】:2021-08-11 17:31:27
【问题描述】:
您好,我有一个返回一个大列表的 api,这个列表的最小长度可以是 100 或 120 个元素,并且颤振解码只有前 20 个元素是列表。 现在在您看来,我加载了一个非常大的 json 数组元素并且不关心快速的 api,req 只需要 300 毫秒 Api 是:https://newsapi.org/。我使用 http 包来加载数据,这就是我的代码。
Future getEverythingFunc({@required String query}) async {
http.Response response = await http.get(Uri.parse(ApiReq.everyThingForSearchingUrl(query:query)));
if (response.statusCode >= 200 && response.statusCode <= 300) {
print(response.body);
return everythingModel = everythingModelFromJson(response.body);
} else if (response.statusCode >= 400 && response.statusCode <= 500) {
throw "Err while getting data ${response.statusCode}";
} else {
throw 'Unknown Err ${response.statusCode}';
}
}
感谢阅读,希望对我有所帮助
【问题讨论】:
-
是否可以提供所有返回的 JSON,以便我们尝试看看出了什么问题?我猜您已经通过打印
response.body进行了检查,并验证了 JSON 完全有效并且不包含任何字符集问题。 -
是的,我打印并看到响应返回了它的完整数据,但问题原因在解析它时只接受前 20 个元素或随机 20 个元素并将它们放在我的模型中的列表中。
-
好的,您是否测试过将完整 JSON 直接粘贴到您的 dart 代码中的位置?只是为了验证问题与其他问题无关?
-
是的,当然!这就是问题,一切工作都很棒,一切都很好,唯一奇怪的是它只将 20 个元素解析到模型列表中,所以我问自己这个问题可能与线程有关,或者问题可能是因为 api 许可证而发生的?但是如果你检查了api,它说开发人员计划不需要支付任何费用,所以我认为问题可能导致因为我在主线程中做了所有事情,所以我使用了计算方法但同样的事情发生了!你可以在 git 上查看我的代码,发给我你的邮件或者写在这里查看我的代码,如果你想查看的话
-
我并不是真正的 Flutter 开发人员,但我可以正确地将您的代码移动到一些普通的 Dart 程序并测试 JSON 解析。您可以在我的 Github 个人资料中找到我的邮件(登录后):github.com/julemand101。我明天有点忙,所以我不能保证我会在星期一之前看它。 :)
标签: flutter http dart flutter-animation dio