flutter 对dio进行简单的二次封装

前言

在项目中,我们往往要对第三方框架进行二次封装,目的在于减小项目对第三方框架的依赖,当第三方框架出现不兼容或者严重bug以至于我们需要更换第三方框架时,我们只需要在封装的地方更改第三方框架,而不需要在整个项目中进行更改。

下面我们封装对dio进行简单的二次封装

代码

import 'dart:ffi';

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';

typedef onSuccess(dynamic data);

typedef onError(String reason, int statusCode);

typedef onComplete();

class Http {
  // 项目的baseurl
  static const BASE_URL = "";

  factory Http() => _getInstance();

  static Http get instance => _getInstance();

  static Http _instance;

  Dio _dio;

  Http._internal() {
    // 可以在自己按需要配置
    _dio = Dio(BaseOptions(
      baseUrl: BASE_URL,
    ));
  }

  static Http _getInstance() {
    if (_instance == null) {
      _instance = new Http._internal();
    }
    return _instance;
  }

  void get(String path,
      {Map<String, dynamic> param,
      onSuccess success,
      onError error,
      onComplete complete}) {
    _dio.get(path, queryParameters: param).then((value) {
      if (value.statusCode == 200) {
        if (success != null) {
          success(value.data);
        }
      } else {
        if (error != null) {
          error(value.statusMessage, value.statusCode);
        }
      }

      if (complete != null) {
        complete();
      }
    });
  }

  void post(String path,
      {data,
      Map<String, dynamic> param,
      onSuccess success,
      onError error,
      onComplete complete}) {
    _dio.post(path, data: data, queryParameters: param).then((value) {
      if (value.statusCode == 200) {
        if (success != null) {
          success(value.data);
        }
      } else {
        if (error != null) {
          error(value.statusMessage, value.statusCode);
        }
      }

      if (complete != null) {
        complete();
      }
    });
  }
}

这里我们使用单例模式进行封装,在项目中的使用我们个调用Http.instance.get或者Http.instance.post。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值