【问题标题】:Flutter: "Unhandled Exception: NoSuchMethodError: The getter 'httpClientAdapter' was called on null."Flutter:“未处理的异常:NoSuchMethodError:getter 'httpClientAdapter' 在 null 上被调用。”
【发布时间】:2020-04-01 17:51:09
【问题描述】:

我正在尝试在 Flutter 上使用 dio,但我不得不忽略证书验证,所以我对代码进行了一些更改,但出现了错误:

E/flutter (21674): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The getter 'httpClientAdapter' was called on null.
E/flutter (21674): Receiver: null
E/flutter (21674): Tried calling: httpClientAdapter

有人可以帮我修一下吗? 我正在使用的功能:

  Future<void> _login3() async {

    Dio dio;
    if (Platform.isAndroid) {
      (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
          (client) {
        client.badCertificateCallback =
            (X509Certificate cert, String host, int port) => true;
        return client;
      };
    }

    Response response =
        await Dio().get("https://sistema.hutransportes.com.br/api/login.php");
    // Response response;

    response =
        await dio.post("/test", data: {"user": "renato", "password": "123456"});
    print(response.data.toString());

  }

【问题讨论】:

    标签: android flutter dio


    【解决方案1】:

    这应该很容易通过单步执行您的代码来解决。我建议在此方法的第一行设置断点并在查看答案之前进行调试,这应该很明显发生了什么。异常消息还具体说明了问题所在。

    在尝试访问 那个变量。 Dio dio 创建变量但值为空。下一个 您尝试访问 null 值的 httpClientAdapter 属性的行,它 理所当然地抛出异常。 通过将第一行更改为 Dio dio = Dio();

    来解决此问题

    【讨论】:

    • 哦,就是这样,谢谢。但是当我解决这个问题时,我再次遇到证书错误,“CERTIFICATE_VERIFY_FAILED:无法获得本地颁发者证书”,我想我永远不会解决这个问题。
    • 对于同样的问题还有很多其他的 SO 问题。至少根据我的经验,这与您的模拟器在域上的执行方式有关。 Herehere 是解决问题的一些方法。
    猜你喜欢
    • 2021-07-15
    • 1970-01-01
    • 2021-03-06
    • 2020-12-09
    • 2020-12-26
    • 2020-09-28
    • 2018-09-10
    • 2021-11-11
    • 2021-09-24
    相关资源
    最近更新 更多