dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等…
网址在右边 → [dio]
一.引入插件
在 pubspec.yaml 文件下新增 dio(注意空格问题)
1 | yaml复制代码dependencies: |
二. 封装DIO
1.创建DioClient单例模式,实现访问方法
1 | scss复制代码// 必须是顶层函数 |
2.封装拦截器
dio的请求流程是 请求拦截器 >> 请求转换器 >> 发起请求 >> 响应转换器 >> 响应拦截器 >> 最终结果。
请求拦截器
1 | dart复制代码//Option拦截器可以用来统一处理Option信息 可以在这里添加 |
响应拦截器
这一部分需要和实际相结合,根据每个后端返回的数据不同灵活配置
1 | scss复制代码///拦截器 数据初步处理 |
上述中用到的类
1 | dart复制代码abstract class BaseResponseData{ |
捕获错误并提示
DioErrorType 分六种 connectTimeout,sendTimeout,receiveTimeout,response,cancel,other,
其实加上刚才我们自定义type 总共可以分成四类 超时的 返回错误的 取消的 和其他
1 | ini复制代码 ///格式化Dio返回的Error |
将获取到的状态码转成中文提示
1 | ini复制代码 ///获取到的数值转换成文字 |
上面用到的一个类
1 | ini复制代码 |
配合provider 根据错误不同提示不同页面即可
三 使用
1 | swift复制代码 Future<LoginModel> login(Map<String, dynamic> param) async { |
本文转载自: 掘金