【问题标题】:how to handle null safety during api call flutter?api调用颤动期间如何处理空安全?
【发布时间】:2021-08-24 09:01:04
【问题描述】:

我正在尝试执行 API 调用,但遇到错误,必须分配空安全变量。

这是我的代码

Future<LoginResponseModel> loginCustomer(
      String username, String password) async {
    LoginResponseModel model;

    try {
      var response = await Dio().post(Config.tokenURL,
          data: {
            "username": username,
            "password": password,
          },
          options: Options(headers: {
            HttpHeaders.contentTypeHeader: "application/x-www-form-urlencoded",
          }));

      if (response.statusCode == 200) {
        model = LoginResponseModel.fromJson(response.data);
      }
    } on DioError catch (e) {
      print(e.message);
    }
    return model;
  }

出现异常

必须先分配不可为空的局部变量“model”,然后才能分配 使用。尝试给它一个初始化表达式,或者确保它是 分配在每个执行路径上。dart (not_assigned_potentially_non_nullable_local_variable)

有没有办法解决这个问题

试过“?”它不工作。

Screenshot

【问题讨论】:

  • 您不会沿所有可能的代码路径初始化model。您必须沿所有代码路径对其进行初始化(例如,如果response.statusCode != 200DioError 被捕获),或者必须使model 可以为空并且必须修复返回类型以匹配。跨度>

标签: flutter api dart dart-null-safety


【解决方案1】:
  Future<LoginResponseModel?> loginCustomer(
      String username, String password) async {
    LoginResponseModel? model;

    try {
      var response = await Dio().post(Config.tokenURL,
          data: {
            "username": username,
            "password": password,
          },
          options: Options(headers: {
            HttpHeaders.contentTypeHeader: "application/x-www-form-urlencoded",
          }));

      if (response.statusCode == 200) {
        model = LoginResponseModel.fromJson(response.data);
      }
    } on DioError catch (e) {
      print(e.message);
    }
    return model;
  }

【讨论】:

    猜你喜欢
    • 2021-10-01
    • 2018-06-27
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2021-12-14
    • 2021-07-14
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多