返回类型是Future的方法 返回值的类型可以不是Future吗
来源:3-7 扩展hi_net添加对dio的支持

慕先生3072650
2021-11-15
///Dio适配器
class DioAdapter extends HiNetAdapter{
@override
Future<HiNetResponse> send(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.DELETE) {
response = await Dio()
.delete(request.url(), data: request.params, options: options);
}
} on DioError catch(e){
error=e;
response=e.response;
}
if(error!=null) {
///抛出HiNetError
throw HiNetError(
response?.statusCode??-1,
error.toString(),
data: buildRes(response,request)
);
}
return buildRes(response, request);
}
///构建HiNetResponse
HiNetResponse buildRes(Response? response, BaseRequest request) {
// return Future.value();
return HiNetResponse(
//?.防止response为空
data: response?.data,
request: request,
statusCode: response?.statusCode,
statusMessage: response?.statusMessage,
extra: response
);
}
}
老师为什么我这个dio适配器的send方法需要返回一个Future包装的对象,但实际上我的send返回的是HiNetResponse也可以跑通呢
1回答
-
CrazyCodeBoy
2021-11-16
Future<T>是个泛型,我们在返回的时候要返回泛型T,比如Future<HiNetResponse>则要返回HiNetResponse
00
相似问题