「这是我参与11月更文应战的第27天,活动详情检查:2021最后一次更文应战」
引入Dio
咱们能够在pub.dev网站上,找到dio包的地址:Dio地址,其GitHub中文简介地址为:Dio中文简介;
要想运用Dio,咱们需求先在项目中引入dio:
假如导入成功,咱们能够在此目录中看到dio包及其版别信息:
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());
}
由于网络恳求是异步的,所以需求运用await和async,这样才干直接接纳恳求回来的对象;咱们来看一下打印结果:
假如get恳求需求增加参数,可运用如下恳求方法:
Response response = await dio.get('http://rap2api.taobao.org/app/mock/293614/api/chat/list', queryParameters: {});
-
queryParameters用来传递参数;
download
运用Dio进行下载操作,需求调用dio的download办法,咱们来看一下其界说:
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文件夹的,在下载的时分,其会自动创立这个文件夹;并且咱们需求在途径后边跟上文件的姓名;
那么如何获取下载进度呢?
给download中的onReceiveProgress办法传递一个_downloadProgress办法,能够在该办法中接纳下载的进度;
转换成百分比,咱们将_downloadProgress办法修正如下:
_downloadProgress(int count, int total) {
if (total != -1) {
print((count / total * 100).toStringAsFixed(0)+'%');
}
}
运转结果:
在设置下载地址的时分,咱们也能够经过回调的方法,赋值一个下载地址给download办法,代码如下:

tmp的文件夹,需求留意的是,这是个iOS的沙盒目录;检查header和savePath的打印结果:
想要了解更多关于Dio网络库的运用,请移步Dio中文文档;
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







