网络和数据
虽然常言道“没有人是一座孤岛”,但一个不具备网络功能的 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 的所有支持,然后在一个“本周小部件”视频中看到 Flutter 的功能。完成这些之后,您将学习如何使用 DevTool 的网络视图调试网络流量。
- 教程:向互联网发送数据
- 教程:异步编程:futures、async、await
- YouTube 视频:FutureBuilder(本周小部件)
- 文章:使用网络视图
扩展资料
#现在您已经掌握了使用 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 中的基础与高级网络
反馈
#随着本网站此部分的不断发展,我们欢迎您的反馈!