我正试图在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());
}
这应该很容易通过遍历代码来解决。我建议在这个方法的第一行设置一个断点,在查看答案之前进行调试,应该很清楚发生了什么。异常的消息还具体说明了哪里出了问题。
在尝试访问上的属性之前,您尚未新建
Dio
的实例该变量。Dio dio
创建变量,但值为null。在下一个您尝试访问null值的httpClientAdapter
属性的行理所当然地抛出一个异常。通过将第一行更改为Dio dio = Dio();
来解决此问题