[Flutter3] 记录Dio的简单封装(一),Flutter3中Dio的简易封装教程(一)

马肤

温馨提示:这篇文章已超过379天没有更新,请注意相关的内容是否还可用!

摘要:本文将介绍在Flutter 3中如何对Dio进行简单封装。Dio是一个流行的HTTP客户端库,用于快速构建网络请求。本文将详细阐述如何通过封装Dio来简化Flutter应用程序中的网络请求操作,包括封装的基本步骤、使用方法和优势。通过封装Dio,开发者可以更方便地管理网络请求,提高开发效率和代码质量。

DioManager的封装与ResponseEntity类的设计

一、效果

请求成功、失败及异常的日志输出效果:

成功附带成功状态的响应结果图片

[Flutter3] 记录Dio的简单封装(一),Flutter3中Dio的简易封装教程(一) 第1张

失败(如500错误)附带失败状态的响应结果图片

失败(如404错误)附带另一种失败状态的响应结果图片

网络异常附带网络异常情况的响应结果图片

二、使用

使用DioManager时,可以直接通过返回值的状态来处理各种情况,而无需在try-catch块中分别处理逻辑,上图展示的是直接调用的封装的API。

[Flutter3] 记录Dio的简单封装(一),Flutter3中Dio的简易封装教程(一) 第2张

三、ResponseEntity类

ResponseEntity类提供了泛型T的数据属性,还提供了tag、method、baseUrl等用于处理请求不同情况的属性,它还提供了toString和toLog函数,用于查看请求、返回、状态码及请求参数等信息。

四、DioManager封装

对DioManager进行了单例模式处理,提供了_request通用方法。

五、_onResponse / _onDioException 的设计

[Flutter3] 记录Dio的简单封装(一),Flutter3中Dio的简易封装教程(一) 第3张

根据Request的情况,把交互场景分为四类:

1、statusCode == 200 且业务code OK

2、statusCode == 200 但业务code不OK

3、statusCode != 200,可能是404/500等情况

4、断网等异常情况

[Flutter3] 记录Dio的简单封装(一),Flutter3中Dio的简易封装教程(一) 第4张

其中第1、2、3类通过_onResponse处理,第4类通过_onDioException处理,_onDioException用于解析DioException,统一返回ResponseEntity格式。

六、Response的处理

ResponseEntity类包含了响应结果的各种信息,如code、msg、data、tag、method、baseUrl、path、desc和queryParameters等,通过重写toString方法,方便查看日志,提供了toLog函数用于打印日志。

七、catch处理

对DioException进行解析,覆盖大部分错误类型,根据不同错误类型设置不同的msg和desc,返回ResponseEntity实例。

[Flutter3] 记录Dio的简单封装(一),Flutter3中Dio的简易封装教程(一) 第5张

八、关于泛型T的处理

对于泛型T的处理,可以直接将json转model的model类型传入泛型以获取数据,关于数据转模型的具体操作,可以参考Flutter3 Json转dart模型的例子。

希望以上内容能够帮助您更好地理解和使用DioManager和ResponseEntity类,如有任何疑问或需要进一步的技术支持,请随时提问。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码