/// Dio适配器
class DioAdapter extends HiNetAdapter {
@override
Future<HiNetResponse<T>> send<T>(BaseRequest request) async {
var response, options = Options(headers: request.header);
var error;
try {
if (request.httpMethod() == HttpMethod.GET) {
response = await Dio().get(request.url(), options: options);
} else if (request.httpMethod() == HttpMethod.POST) {
response = await Dio()
.post(request.url(), data: request.params, options: options);
} else if (request.httpMethod() == HttpMethod.PUT) {
response = await Dio()
.put(request.url(), data: request.params, options: options);
} else if (request.httpMethod() == HttpMethod.DELETE) {
response = await Dio()
.delete(request.url(), data: request.params, options: options);
}
} on DioError catch (e) {
error = e;
response = e.response;
}
if (error != null) {
throw HiNetError(response?.statusCode ?? -1, error.toString(),
data: buildRes(response, request));
}
return buildRes(response, request);
}
/// 构建HiNetResponse
HiNetResponse buildRes(response, BaseRequest request) {
return HiNetResponse(
data: response.data,
request: request,
statusCode: response.statusCode,
statusMessage: response.statusMessage,
extra: response);
}
}
Future<dynamic> send<T>(BaseRequest request) async {
/// 使用Dio发送请求
HiNetAdapter adapter = DioAdapter();
return adapter.send(request);
}
多出一部分错误信息,且没办法捕捉到,dio版本是:dio: ^4.0.0

一次性掌握Flutter高阶技能+商业级复杂项目架构设计与开发方案
了解课程