北京动点飞扬开发团队

承接U3D、UE4、VR/AR、Flutter、H5应用开发
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

从1.0发布至今,Dio受到了大量国内外开发者的关注,并收到了很多肯定和建议。为了让Dio功能更强大、让开发者使用起来更容易,我们综合了1.0中的各种反馈,对Dio进行了一次大的更新,为了让使用者在1.0和2.x之间有个过渡,我们将2.0.x-2.1.0作为预发布版在全网进行了接近两个月的公测。现在,很高兴的告诉大家,2.x的功能已经收敛、质量已经稳定,因此,今天我们正式发布Dio 2.x的第一个稳定版Dio v2.1.0

相比1.x,2.x在Restful API、拦截器、FormData等很多地方都进行了扩展和调整,除了这些,Dio在2.x中还引入Adapter层,为Mock接口数据和自定义底层网络库提供了支持。整体功能相比1.x有了很大的提升,因此我们强烈建议所有1.x用户都能升级到2.1。

 

 

功能介绍

请参考: https://github.com/flutterchina/dio

Dio V2.1.x 变更列表

Restful API

2.1中对所有Restful API的变化有:

  1. 支持Uri,在1.x中,Url只能是字符串,2.1中所有API都提供了对应支持Uri的版本,如get方法有dio.get(...)dio.gerUri(...)

  2. 所有方法都支持queryParameters,2.1标准化了参数语义,并允许所有请求都可以传query,而data只针对可以提交请求体的方法如post作为请求体提交。另外相对于Uri.queryParameters,我们对Restful API中的queryParameters的功能做了加强,主要有两个差异:

    • 参数值类型不同;前者只能接受Map<String, String|Iterable<String>>类型的参数,而后者可以接受Map<String, dynamic>类型,比如:

      dio.getUri(Uri(url, queryParameters: {"age":15})) //会抛出异常,Uri.queryParameter的value不能是int类型
      dio.get(url, queryParameters: {"age":15}); //这是OK的!
      

      编码方式有所差异; Uri.queryParameters编码方式遵循Dart SDK中的规则,而Restful API中的queryParameters编码方式和jQuery一致,如:

    •   
        //下面请求的最终uri为:http://domain.com/api?selectedId=1&selectedId=2
        Response response = await dio.getUri(
          Uri(path: "api",queyParameters:  {"selectedId": ["1", "2"],});
        );
        //下面请求的最终uri为:https://flutterchina.club?selectedId%5B%5D=1&selectedId%5B%5D=2
        dio.get("api",queryParameters: {"selectedId": ["1", "2"], });
      

        

  1. 支持以Stream方式提交数据了;2.1中可以通过Stream的方式来提交二进制数据了,详细的示例可以参考这里

  2. 支持以二进制数组形式接收数据了;1.x中如果要以二进制形式接收响应数据则需要设置options.responseTypeResponseType.stream 来接收响应流,然后再通过读取响应流来获取完整的二进制内容,而2.x中只需要设置为ResponseType.bytes,则可直接获得响应流的而精致数组。

  3. API统一添加了onSendProgressonReceiveProgress 两个回调,用于监听发送数据和接收数据的具体精度,在1.x中只有在下载文件和上传formdata时才能监听进度,而2.x中所有接口都可以

REF:https://www.jianshu.com/p/3642c78ac5c3

有flutter项目外包开发欢迎联系我们

QQ:372900288 WX:Liuxiang0884  (均长期有效)