网络与数据
俗话说,“人无岛屿”,一个没有网络功能的 Flutter 应用可能会让人感觉有点脱节。本页面介绍如何在 Flutter 应用中添加网络功能。您的应用将检索数据、将 JSON 解析为可用的内存表示,然后再次发送数据。
网络数据获取简介
#最简单的情况下,假设您使用 http
包来适应 Dart VM 基于平台和基于 Web 浏览器的环境之间的网络访问差异,发出 HTTP GET
请求可以像下面这样简单
import 'package:http/http.dart' as http;
void main() async {
var response = await http.get(
Uri.parse('https://jsonplaceholder.typicode.com/albums/1'),
);
print(response.body);
}
以下两个教程向您展示了将 http
包添加到您的应用中涉及的所有细节,无论您是在 Android、iOS 上运行,还是在 Web 浏览器中,或是在 Windows、macOS 或 Linux 上原生运行。第一个教程向您展示如何向网站发出未经身份验证的 GET
请求,将检索到的数据解析为 JSON
,然后显示结果数据。第二个教程在此基础上添加了身份验证标头,从而能够访问需要授权的 Web 服务器。Mozilla 开发者网络 (MDN) 的文章提供了有关 Web 上授权工作原理的更多背景信息。
- 教程:从互联网获取数据
- 教程:发出经过身份验证的请求
- 文章:MDN 关于网站授权的文章
利用从网络获取的数据
#从网络检索数据后,您需要一种方法将网络数据转换为可在 Dart 中轻松使用的格式。上一节中的教程使用手工编写的 Dart 将网络数据转换为内存表示。在本节中,您将看到处理此转换的其他选项。第一个链接到一个 YouTube 视频,其中展示了 freezed
包 的概述。第二个链接到一个 codelab,其中涵盖了使用 JSON 解析案例研究的模式和记录。
- YouTube 视频:Freezed(每周一包)
- Codelab:深入了解 Dart 的模式和记录
双向数据传输
#现在您已经掌握了检索数据的技巧,是时候看看如何推送数据了。此信息从将数据发送到网络开始,然后深入探讨异步性。事实上,一旦您开始进行网络通信,您就需要处理物理距离较远的 Web 服务器可能需要一段时间才能响应的事实,并且在等待数据包往返期间,您不能停止渲染屏幕。Dart 对异步性提供了很好的支持,Flutter 也是如此。您将在教程中了解 Dart 的支持,然后在“每周一 Widget”视频中了解 Flutter 的功能。完成后,您将学习如何使用 DevTool 的网络视图调试网络流量。
- 教程:将数据发送到互联网
- 教程:异步编程:future、async、await
- YouTube 视频:FutureBuilder(每周一 Widget)
- 文章:使用网络视图
扩展资料
#现在您已经掌握了 Flutter 的网络 API,了解 Flutter 的网络使用上下文将有所帮助。第一个 codelab(表面上是在 Flutter 中创建自适应应用)使用用 Dart 编写的 Web 服务器来解决 Web 浏览器的 跨源资源共享 (CORS) 限制。
接下来,Flutter DevRel 校友 Fitz 录制了一个长篇 YouTube 视频,讨论数据位置对 Flutter 应用的重要性。最后,Flutter GDE Anna (Domashych) Leushchenko 发布了一系列非常有用的文章,涵盖了 Flutter 中的高级网络知识。
- Codelab:Flutter 中的自适应应用
- 视频:保持本地化:管理 Flutter 应用的数据
- 文章系列:Dart 和 Flutter 中的基本和高级网络
反馈
#由于本网站的此部分正在不断发展,我们 欢迎您提供反馈!
除非另有说明,否则本网站上的文档反映了 Flutter 的最新稳定版本。页面最后更新于 2024-09-25。 查看源代码 或 报告问题.