Flutter HTTP 响应在 Flutter web 上测试时显示完整响应,但在 Android 设备上测试时显示不完整
Posted
技术标签:
【中文标题】Flutter HTTP 响应在 Flutter web 上测试时显示完整响应,但在 Android 设备上测试时显示不完整【英文标题】:Flutter HTTP response showing full response when testing on Flutter web but incomplete when testing on Android device 【发布时间】:2021-04-15 20:27:28 【问题描述】:我现在真的一无所知。
我构建了一个 Flutter 应用并在 Web(Google Chrome)上进行了测试。
我正在向开源免费 API 发出 HTTP 请求,并使用 Future Builder 在其中显示圆形进度条,直到加载数据。在网络上,它在一秒钟内完美加载数据并显示。
当我在我的手机 (android) 上测试相同的代码时,进度条会永远加载。
HTTP 请求的响应在控制台上是 200,但是当我在控制台上打印时,它没有显示完整的数据集(与显示完整数据的 Chrome 不同)。
我还初始化了所有 pubspec yaml 条目。包“http.dart”在 web 上的工作方式与在本机上的工作方式有什么不同吗?
将'package:http/http.dart'导入为http;
有人可以帮我吗?
谢谢
依赖: 扑: sdk:颤动
cupertino_icons: ^1.0.0 http: ^0.12.0+1
dev_dependencies: 颤振测试: sdk:颤动 google_fonts:^1.1.1 font_awesome_flutter: ^8.11.0
【问题讨论】:
你应该分享你的代码。你可能在你的代码中犯了一个错误 【参考方案1】:由于您收到 200 状态代码并且它正在网络上运行,因此我们可以放心地假设后端不是问题所在。但是,正如您提到的输出被截断,这是由于 print 语句的限制。之前提到过这个问题here 和here,并使用了几种方法来克服这个限制。
我认为对您更有利的另一种方法是inspect()
,您需要导入dart:developer
并在使用它之前解码JSON 以使其工作。这将类似于 Web 控制台中的打印对象。 Link
示例
inspect(jsonDecode(response.body));
关于 Android 上发生的无限加载,如果不查看您的源代码,我们无法查明问题,但它与 http 库无关。
【讨论】:
以上是关于Flutter HTTP 响应在 Flutter web 上测试时显示完整响应,但在 Android 设备上测试时显示不完整的主要内容,如果未能解决你的问题,请参考以下文章
Flutter Http Request 从 JSON 响应中删除重复项
如何在 Flutter 的 map<String, dynamic> 中转换 http.MultipartRequest POST 方法的响应?