第九十回:对dio进行封装

文章介绍了在Flutter中对dio库进行网络操作的封装方法,包括使用类封装网络参数和创建独立的方法来执行请求,以提高代码复用性和降低耦合度。示例代码展示了如何创建HttpConfig和HttpRequest类来简化dio的使用。
摘要由CSDN通过智能技术生成

我们在上一章回中介绍了使用dio进行网络操作相关的内容,本章回中将对dio做简单的封装.闲话休提,让我们一起Talk Flutter吧。

概念介绍

我们在上一章回中介绍dio库的基本用法,不过在实际项目中这样去使用显然是不行的,常用的做法是对网络操作进行封装,一方面可以增加代码的复用,另一方面可以减少网络操作与其它业务功能的耦合。我们在本章回中介绍的如何封装dio相关的网络操作。

封装方法

封装可以简单概括为两个类型:

  • 对网络操作相关的参数进行封装,常用的做法是使用类来封装,然后在类中设定静态成员,这些成员是网络操作相关的配置,比如请求的地址前缀,延时的时长等。
  • 对网络操作进行封装,把网络操作封装成独立的方法,并且开放给其它模块使用。在方法内使用dio进行网络操作,网络操作需要的数据通过方法的参数来传递,比如POST提交的数据通过参数传递到方法中。业务模块进行网络操作时直接调用这些独立的接口就可以,不需要直接调用dio相关的接口,减少了模块之间的耦合。

下面是封装的示例代码,请大家参考:

示例代码

///封装常用的网络参数
class HttpConfig {
  static final String BASE_URL = 'https://httpbin.org';
  static final int TIME_OUT = 15;
}

class HttpRequest {
  static final baseOptions = BaseOptions(
    baseUrl: HttpConfig.BASE_URL,
    connectTimeout: Duration(seconds: HttpConfig.TIME_OUT),
    sendTimeout: Duration(seconds: HttpConfig.TIME_OUT),
    receiveTimeout: Duration(seconds: HttpConfig.TIME_OUT),
  );

  static final mdio = Dio(baseOptions);
///把网络操作相关的功能封装成独立的方法,网络操作相关的数据通过url和params参数传递
  static Future<T> request<T>(String url,{
        String method='get',
        required Map<String,dynamic> params,
      }) async {

    final option = Options(method: method);

    //默认也会抛出异常,这里只用来捕获特定的异常
    try {
      Response response = await mdio.request(
          url, queryParameters: params, options: option);
      return response.data;
    }on DioException catch (e) {
      print(e.toString());
      return Future.error(e);
    }
  }
}

上面的代码中添加了相关的注释,这样方便大家理解封装的含义。代码中把网络操作封装成了独立的方法,操作的类型,比如GET,POST等通过参数来指定,也可以依据Http网络操作的类型封装不同的方法,相当于一种网络操作是一个独立的方法。总之,封装的形式是多样的,但是封装的思想是一致的。

看官们,对dio进行封装的内容就介绍到这里,欢迎大家在评论区交流与讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值