Можно ли отобразить диалоговое окно с предупреждением при обнаружении недействительного сертификата?Я могу подключиться достаточно просто, просто перенастраивая «true» из функции badCert, но я бы хотел вместо этого показать диалоговое окно с предупреждением и вернуть либо ответ истину, либо ложь на основе ответа.
SecureSocket.connect("<HOST>", <PORT>,onBadCertificate: badCert).then((Socket sock) {
socket = sock;
socket.listen(dataHandler,
onError: errorHandler,
onDone: doneHandler,
cancelOnError: false);
//socket.write(sb.toString());
}).catchError(errorHandler);
bool badCert(X509Certificate cert) {
_asyncConfirmDialog(ctx).then((action) {
if (action == ConfirmAction.ACCEPT) {
return true;
}
return false;
});
return false;
}
Future<ConfirmAction> _asyncConfirmDialog(BuildContext context) async {
return showDialog<ConfirmAction>(
context: context,
barrierDismissible: false, // user must tap button for close dialog!
builder: (BuildContext context) {
return AlertDialog(
title: Text('Certificate Issue'),
content: const Text(
'You have an invalid or error with you SSL Certificate. Do you want to Accept?'),
actions: <Widget>[
FlatButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.of(context).pop(ConfirmAction.CANCEL);
},
),
FlatButton(
child: const Text('Accept'),
onPressed: () {
Navigator.of(context).pop(ConfirmAction.ACCEPT);
},
)
],
);
},
);
}