温馨提示:这篇文章已超过379天没有更新,请注意相关的内容是否还可用!
摘要:本文将介绍在Flutter 3中如何对Dio进行简单封装。Dio是一个流行的HTTP客户端库,用于快速构建网络请求。本文将详细阐述如何通过封装Dio来简化Flutter应用程序中的网络请求操作,包括封装的基本步骤、使用方法和优势。通过封装Dio,开发者可以更方便地管理网络请求,提高开发效率和代码质量。
DioManager的封装与ResponseEntity类的设计
一、效果
请求成功、失败及异常的日志输出效果:
成功附带成功状态的响应结果图片
失败(如500错误)附带失败状态的响应结果图片
失败(如404错误)附带另一种失败状态的响应结果图片
网络异常附带网络异常情况的响应结果图片
二、使用
使用DioManager时,可以直接通过返回值的状态来处理各种情况,而无需在try-catch块中分别处理逻辑,上图展示的是直接调用的封装的API。
三、ResponseEntity类
ResponseEntity类提供了泛型T的数据属性,还提供了tag、method、baseUrl等用于处理请求不同情况的属性,它还提供了toString和toLog函数,用于查看请求、返回、状态码及请求参数等信息。
四、DioManager封装
对DioManager进行了单例模式处理,提供了_request通用方法。
五、_onResponse / _onDioException 的设计
根据Request的情况,把交互场景分为四类:
1、statusCode == 200 且业务code OK
2、statusCode == 200 但业务code不OK
3、statusCode != 200,可能是404/500等情况
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实例。
八、关于泛型T的处理
对于泛型T的处理,可以直接将json转model的model类型传入泛型以获取数据,关于数据转模型的具体操作,可以参考Flutter3 Json转dart模型的例子。
希望以上内容能够帮助您更好地理解和使用DioManager和ResponseEntity类,如有任何疑问或需要进一步的技术支持,请随时提问。
还没有评论,来说两句吧...