-2

我正在尝试在 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());

  }
4

1 回答 1

1

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

Dio在尝试访问该变量的属性之前,您还没有更新一个实例。Dio dio创建变量,但值为空。在下一行中,您尝试访问httpClientAdapternull 值的属性,它正确地引发了异常。通过将第一行更改为来解决此问题Dio dio = Dio();

于 2020-04-01T17:57:09.677 回答