16.第三方库导入与网络数据异步请求与展示

前言

在 iOS 开发中 我们经常使用 CocoaPods 等工具进行包管理。那么在 flutter 开发中又该如何进行呢?

一、 http

这是官方提供来一个网络库:http

点击复制

1

1.1 修改 pubspec.yaml 配置文件

2

1.2 更新依赖库

3

1.3 在使用的地方导入

二、 异步函数

2.1 简单汇总Service

简单汇总一下Service,便于后续使用。

2.2 发送请求

这里简单选择在 initState 中进行网络请求,调用移步方法

这里可以发现,和我们在 iOS 开发中的网络请求的调用形式有很大差别。iOS开发中我们都是通过回调的形式接收请求结果的。这里使用 await

三、 数据模型转换

接收到网络数据后我们自然需要进行数据模型的转换。

3.1 定义数据模型

3.2 Json 转 Map

3.3 构建 Cell

  • Text

    • 样式设置

    • 缩略方式设置

    • 设置最大宽度

  • Container

    • 设置图片圆角

3.4 构建 ListView

3.5 效果

4

四、 Future & FutureBuilder

除了按照上面这种我们在 iOS 开发中一样常规的思路进行请求和展示外,再介绍另一种可以处理这种场景。

4.1 请求方法修改

之前的加载方法:

修改为:

4.2 ListView 修改

AsyncSnapshot

包含有绑定的 future 回调的数据,也包含异步任务的状态。我们可以用来判断是否展示加载页面。

4.3 看看效果

5

五、 结合上面两种方式

结合上面两种方式,这里使用 Future 调整加载数据的函数。

5.1 请求函数修改

5.2 回调处理

5.3 异常处理

通过 Future 我们也可以捕捉异常。

5.4 设置超时

六、 保留数据

总结

  • 第一种方式更加接近我们 iOS 开发中的思路

  • 第二种方式 Future & FutureBuilder 更加充分利用 Future 特性

  • 而结合二者的方式则对我这个iOS刚入门Flutter的新手而言,更加熟悉同时也有一些新的体验

完整代码

GitHub

Last updated

Was this helpful?