Flutter 如何将badCertificateCallback添加到http.BaseClient[flatter,Dart]

Flutter 如何将badCertificateCallback添加到http.BaseClient[flatter,Dart],flutter,dart,signalr,Flutter,Dart,Signalr,我正在使用signalr_core连接到signalr。 我创建了下面的代码,这个连接没有问题 信号通知(){ if(this.\u hubConnection==null){ var期权= IOClient(HttpClient()…badCertificateCallback=(x,y,z)=>true); 这是。_hubConnection=HubConnectionBuilder() .withUrl(服务器URL,选项) .withAutomaticReconnect() .build

我正在使用signalr_core连接到signalr。 我创建了下面的代码,这个连接没有问题

信号通知(){
if(this.\u hubConnection==null){
var期权=
IOClient(HttpClient()…badCertificateCallback=(x,y,z)=>true);
这是。_hubConnection=HubConnectionBuilder()
.withUrl(服务器URL,选项)
.withAutomaticReconnect()
.build();
}
这个;
}
我想修改选项中的标题信息

我添加了一个头引用,但是出现了一个证书验证失败错误

E/flutter ( 2902): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: HandshakeException: Handshake error in client (OS Error: 
E/flutter ( 2902):  CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(handshake.cc:354))
这是我的密码

导入'dart:io';
导入“包:http/io_client.dart”;
导入“包:signalr_core/signalr_core.dart”;
进口“包装:颤振/材料.省道”;
将“package:http/http.dart”导入为http;
进口“包装:颤振/基础.dart”;
导入“../resources/common.dart”;
类\u HttpClient扩展了http.BaseClient{
final _httpClient=http.Client();
最终地图标题;
_HttpClient({@required this.defaultHeaders});
@凌驾
未来发送(http.BaseRequest){
request.headers.addAll(defaultHeaders);
返回\u httpClient.send(请求);
}
}
类信号通知{
静态字符串serverUrl=SignalRURL;
轮毂连接_轮毂连接;
NotificationManager NotificationManager=NotificationManager();
最终httpClient=\u httpClient(默认标题:{
“X-Api-Key”:“Key”,
“X-Client-Id”:“Id”,
});
信号通知{
if(this.\u hubConnection==null){
这是。_hubConnection=HubConnectionBuilder()
.withUrl(服务器URL,HttpConnectionOptions(客户端:httpClient))
.withAutomaticReconnect()
.build();
}
这个;
}
我认为出现这个问题是因为在HttpClient中没有坏的CertificateCallback

我也提到过,但它不起作用。
我想知道解决方案。

HttpClient
来自
dart:io
(我将其称为
io.HttpClient
)提供了一个
包:http
BaseClient
没有

但是,
package:http
为它的
BaseClient
类提供了几个实现。其中一个是(我称之为
http.IOClient
),它由
io.HttpClient
支持

因此,您应该能够将
http.IOClient
io.HttpClient
一起使用,并按照您想要的方式进行配置,例如:

导入'dart:io'作为io;
将“package:http/http.dart”导入为http;
将“package:http/io_client.dart”导入为http;
类\u HttpClient扩展了http.BaseClient{
最终io.HttpClient\u ioHttpClient;
最终http.IOClient\u httpClient;
最终地图标题;
_HttpClient({@required this.defaultHeaders})
:_ioHttpClient=io.HttpClient(){
_httpClient=http.IOClient(_ioHttpClient);
}
无效设置badCertificateCallback(badCertificateCallback回调)=>
_ioHttpClient.badCertificateCallback=回调;
@凌驾
未来发送(http.BaseRequest){
request.headers.addAll(defaultHeaders);
返回\u httpClient.send(请求);
}
}

class\u HttpClient扩展了http.BaseClient…“这是不可能的,你能给我一个具体的例子吗?我认为这段代码不完整。IDE中发生了一个错误。例如:未定义的类“http.IOClient”,所有最终变量都必须初始化,但“\u HttpClient”没有,函数“IOClient”没有定义。对不起,我忘记了一个n
import
。这是一个未经测试的示例;重点是演示为您指明正确方向的方法,而不一定是为了给您提供准确的实现。感谢您的反馈!我明白了……这是一个提示。非常感谢!