第6周课堂练习
本节为当堂可完成的练习,基于本周 大纲、讲义 与 演示案例 内容。
练习 1:运行本课程 Demo 并理解异步与 JSON
依据:讲义「五、运行本课程第6周 Demo」;案例 demos/week-06/demo/async_http_cli。
步骤:
- 进入
demos/week-06/demo/async_http_cli,执行dart pub get、dart run bin/main.dart。 - 观察输出:至少会看到两条 Post 的标题与内容(若 API 可用则为真实数据,否则为 fallback)。
- 在
bin/main.dart中找到:async/await的用法、http.get与timeout、jsonDecode与Post.fromJson。 - 口头或笔记:
fetchPost的返回类型是什么?为什么 main 要写成Future<void> main() async?
验收:能成功运行程序,并能指出异步函数、GET 请求与 fromJson 所在位置。
练习 2:修改案例请求另一条 post 或增加超时捕获
依据:大纲「网络请求」「错误处理与超时」;讲义「三、HTTP 请求」「二、异步基础」。
步骤:
- 在
main()中增加一次fetchPost(3)(或任意 id),并 print 结果。 - 或将
fetchPost中的Duration(seconds: 10)改为Duration(milliseconds: 1),在 main 中保留on TimeoutException catch (e),运行后确认能捕获超时并打印。 - 保存后运行,确认输出符合预期。
验收:程序能请求新 id 或能演示超时捕获。
练习 3:用 DartPad 写一个 async 函数(无 http)
依据:大纲「Future」「async-await」;讲义「二、异步基础与 Future」。
步骤:
- 打开 DartPad。
- 编写
Future<String> fetchData() async { await Future.delayed(Duration(seconds: 1)); return 'Done'; },在main()中await fetchData()并 print(main 需为Future<void> main() async { ... })。 - 点击 Run,确认约 1 秒后输出 “Done”。
验收:DartPad 中能定义并调用 async 函数,看到延迟后输出。
说明与链接
- 课堂练习与课后作业不同:课堂练习为当堂完成、可当堂验收;课后作业见 本周大纲 中的「📝 课后作业」。
- 遇到问题可查阅 第6周讲义 与 Dart 异步 codelab。
- 返回 第6周聚合页 可继续查看大纲、讲义与案例。