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回答

CrazyCodeBoy

2021-05-10

在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);


2
4
慕先生4316985
。。。
2021-12-25
共4条回复

幕布斯3108837

2021-09-01

111

0
0

幕布斯3108837

2021-06-13

对打阿萨德

0
1
幕布斯3108837
你说的啥啊
2021-06-17
共1条回复

Flutter高级进阶实战-仿哔哩哔哩-掌握Flutter高阶技能

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

1723 学习 · 870 问题

查看课程