The getter 'data' was called on null.
来源:4-3 Flutter登录与注册SDK设计实现

mid_one
2021-05-10
Future fire(BaseRequest request) async {
HiNetResponse response;
var error;
try {
response = await send(request);
} on HiNetError catch (e) {
error = e;
response = e.data;
printLog(e.message);
} catch (e) {
error = e;
printLog(e);
}
if (response == null) {
printLog(error);
}
var result = response.data;
printLog(result);
var status = response.statusCode;
switch (status) {
case 200:
return result;
break;
case 401:
throw NeedLogin();
break;
case 403:
throw NeedAuth(result.toString(), data: result);
break;
default:
throw HiNetError(status, result.toString(), data: result);
break;
}
}
fire
方法中无网络的时候报上面的错. 问答区你说对response做一下保护是什么意思?
写回答
3回答
-
在DioAdapter中加下response为空的保护:
///构建HiNetResponse return HiNetResponse( data: response?.data,//?.防止response为空 request: request, statusCode: response?.statusCode, statusMessage: response?.statusMessage, extra: response);
在HiNet的fire方法中如果error不为空,则复用现有的error,具体修改是在default代码下将:
HiNetError(status, result.toString(), data: result); //改为 error ?? HiNetError(status, result.toString(), data: result);
242021-12-25 -
幕布斯3108837
2021-09-01
111
00 -
幕布斯3108837
2021-06-13
对打阿萨德
012021-06-17
相似问题