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 响应头缓存 JSON 响应

HTTP 请求未在响应中执行 - Flutter/Dart

Flutter:使用泛型进行 http 响应

Flutter Web Http 请求奇怪的响应

Flutter Http Request 从 JSON 响应中删除重复项

如何在 Flutter 的 map<String, dynamic> 中转换 http.MultipartRequest POST 方法的响应?