Диалог оповещения о неверном SSL-сертификате с использованием флаттера - PullRequest
0 голосов
/ 01 апреля 2019

Можно ли отобразить диалоговое окно с предупреждением при обнаружении недействительного сертификата?Я могу подключиться достаточно просто, просто перенастраивая «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);
            },
          )
        ],
      );
    },
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...