本文共 1741 字,大约阅读时间需要 5 分钟。
在项目中,我们往往要对第三方框架进行二次封装,目的在于减小项目对第三方框架的依赖,当第三方框架出现不兼容或者严重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, {Mapparam, 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 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。
转载地址:http://jdtzi.baihongyu.com/