网络和数据
虽然常说“没有人是一座孤岛”,但一个没有网络功能的 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 Developer Network (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) 限制。
接下来,一个长篇 YouTube 视频,其中 Flutter DevRel 校友 Fitz 谈论数据位置对 Flutter 应用程序的重要性。最后,由 Flutter GDE Anna (Domashych) Leushchenko 撰写的一系列非常有用的文章,涵盖了 Flutter 中的高级网络。
- Codelab:Flutter 中的自适应应用程序
- 视频:保持本地:管理 Flutter 应用程序的数据
- 系列文章:Dart 和 Flutter 中的基础和高级网络
反馈
#由于本网站的此部分正在不断发展,我们欢迎你的反馈!