阅读 185

Flutter(二十九)-网络框架Dio

引入Dio

我们可以在pub.dev网站上,找到dio包的地址:Dio地址,其GitHub中文简介地址为:Dio中文简介;

要想使用Dio,我们需要先在项目中引入dio

image.png

如果导入成功,我们可以在此目录中看到dio包及其版本信息:

image.png

Dio的使用

get

Dio的使用很简单,只需要创建一个Dio对象,即可直接发送网络请求,如下代码:

sendDio() async {   // 创建Dio对象   final dio = Dio();   // 发送请求   Response response = await dio.getUri(Uri.parse('http://rap2api.taobao.org/app/mock/293614/api/chat/list'));   // 返回数据   print(response.statusCode); print(response.data.toString()); } 复制代码

因为网络请求是异步的,所以需要使用awaitasync,这样才能直接接收请求返回的对象;我们来看一下打印结果:

image.png

如果get请求需要添加参数,可使用如下请求方式:

Response response = await dio.get('http://rap2api.taobao.org/app/mock/293614/api/chat/list', queryParameters: {}); 复制代码

  • queryParameters用来传递参数;

download

使用Dio进行下载操作,需要调用diodownload方法,我们来看一下其定义:

Future<Response> download(   String urlPath,   savePath, {   ProgressCallback? onReceiveProgress,   Map<String, dynamic>? queryParameters,   CancelToken? cancelToken,   bool deleteOnError = true,   String lengthHeader = Headers.contentLengthHeader,   data,   Options? options, }); 复制代码

  • urlPath:下载的文件地址;

  • savePath:文件下载之后的保存地址;

我们先来下载一下腾讯课堂mac版试一下:

sendDio() async {   // 创建Dio对象   final dio = Dio();   // 发送请求   var downloadUrl = 'https://edu-files-1251502357.cos.ap-shanghai.myqcloud.com/CourseTeacher_2.8.1.13_DailyBuild.dmg';   var savePath = '/Users/***********/Desktop/testDownload/腾讯课堂.dmg';   dio.download(downloadUrl, savePath).then((value) => print(value)).whenComplete(() => print('下载完成')); } 复制代码

需要注意的是,我们先将文件下载到电脑的桌面,当前桌面是没有testDownload文件夹的,在下载的时候,其会自动创建这个文件夹;并且我们需要在路径后边跟上文件的名字;

我们看一下最终的执行结果: image.png

那么如何获取下载进度呢?

image.png

download中的onReceiveProgress方法传递一个_downloadProgress方法,可以在该方法中接收下载的进度;

转换成百分比,我们将_downloadProgress方法修改如下:

伪原创工具 SEO网站优化  https://www.237it.com/ 

_downloadProgress(int count, int total) {   if (total != -1) {     print((count / total * 100).toStringAsFixed(0)+'%');   } } 复制代码

运行结果:

image.png

在设置下载地址的时候,我们也可以通过回调的方式,赋值一个下载地址给download方法,代码如下:

image.png 我们在这个地方,将下载地址换成了手机端的沙盒tmp的文件夹,需要注意的是,这是个iOS的沙盒目录;查看headersavePath的打印结果:

image.png

想要了解更多关于Dio网络库的使用,请移步Dio中文文档;


作者:枸杞菊花保温杯
链接:https://juejin.cn/post/7035072275976028174


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐