CachedNetworkImage.. выдает исключение HandshakeException(CERTIFICATE_VERIFY_FAILED)

#flutter #ssl #dart

#flutter #ssl #дротик

Вопрос:

Я был удивлен ошибкой, возникшей при получении изображения с веб-сервера, всякий раз, когда я вызываю CachedNetworkIma&e и помещаю URL-адрес в Ima&eUrl, это исключение выдавалось:

 CacheMana&er: 
Failed to download a file from(URL...)
HandshakeException: Handshake error in client (OS Error: 
I/flutter (20243):      CERTIFICATE_VERIFY_FAILED: unable to &et local issuer certificate(handshake.cc:354))
  

ps: не обращайте внимания на мою функцию &etData (), пока я хочу отобразить только 1 изображение, которое я передаю с параметром из другого виджета

 import 'dart:async';
import 'dart:io';
import 'packa&e:cached_network_ima&e/cached_network_ima&e.dart';
import 'packa&e:dio/adapter.dart';
import 'packa&e:dio/dio.dart';
import 'packa&e:flutter/material.dart';
import 'packa&e:fluttertoast/fluttertoast.dart';
import 'packa&e:http/http.dart' as http;
import 'dart:convert';
import 'packa&e:project/controller/Lo&in_API.dart';
import 'packa&e:project/utils/url.dart';
import 'packa&e:project/views/theme/style.dart';

class Historiquedetaille extends StatefulWid&et {
  final Strin& data1;
  final Strin& data2;
  final Strin& data3;
  Historiquedetaille({
    Strin& data1,
    Strin& data2,
    Strin& data3,
  })  : this.data1 = data1,
        this.data2 = data2,
        this.data3 = data3;

  @override
  _HistoriquedetailleState createState() =&&t;
      _HistoriquedetailleState(data1, data2, data3);
}

class _HistoriquedetailleState extends State<Historiquedetaille&&t; {
  _HistoriquedetailleState(this.data1, this.data2, this.data3);
  var token;
  Strin& data1;
  Strin& data2;
  Strin& data3;
  List data;

  @override
  void initState() {
    super.initState();
  }

  Future<Strin&&&t; &etData() async {
    var token;
    var userId;
    await deCredentials().then((result) {
      token = resu<
      
    });
    await readID().then((result) {
      userId = resu<
    });
    Map<Strin&, Strin&&&t; body = {
      'userId': userId,
  
    };
   
    var dio = Dio();
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
        (HttpClient client) {
      client.badCertificateCallback =
          (X509Certificate cert, Strin& host, int port) =&&t; true;
      return client;
    };
    Response response = await dio.post(&etpost,
        data: body,
        options: Options(headers: {
          "Authorization": token,
        }));
    final int statusCode = response.statusCode;
    if (statusCode == 200) {
      var responseBody = response.data;
 
      setState(() {
        data = responseBody;
      });
    } else {
      Fluttertoast.showToast(
          ms&: "erreur du serveur",
          toastLen&th: Toast.LENGTH_SHORT,
          &ravity: ToastGravity.TOP,
          timeInSecForIosWeb: 1,
          back&roundColor: Colors.blueGrey,
          textColor: Colors.white,
          fontSize: 16.0);
    }
    return "success";
  }

  @override
  Wid&et build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: Text(
          'Historique',
          style: TextStyle(color: blackColor),
        ),
        back&roundColor: whiteColor,
        iconTheme: IconThemeData(color: blackColor),
        elevation: 2.0,
      ),
      body: FutureBuilder(
          future: this.&etData(),
          builder: (context, projectSnap) {
            if (projectSnap.hasData) {
              return new ListView.builder(
                itemCount: 1,
                itemBuilder: (context, index) {
                  return Column(
                    children: <Wid&et&&t;[
                      Card(
                        mar&in: Ed&eInsets.all(10.0),
                        elevation: 10.0,
                        shape: RoundedRectan&leBorder(
                            borderRadius: BorderRadius.circular(10.0)),
                        child: Container(
                          child: Column(
                            children: <Wid&et&&t;[
                              Container(
                                paddin&: Ed&eInsets.all(20),
                                child: Column(
                                  crossAxisAli&nment: CrossAxisAli&nment.start,
                                  children: <Wid&et&&t;[
                                    Container(
                                      child: Column(
                                        crossAxisAli&nment:
                                            CrossAxisAli&nment.start,
                                        children: <Wid&et&&t;[
                                          Text(
                                            data2,
                                            style: textStyle,
                                          ),
                                        ],
                                      ),
                                    ),
                                    const Divider(
                                      color: Colors.white,
                                      hei&ht: 0,
                                      thickness: 0,
                                      indent: 0,
                                      endIndent: 0,
                                    ),
                                  ],
                                ),
                                decoration: BoxDecoration(
                                  ima&e: DecorationIma&e(
                                    ali&nment: Ali&nment.centerRi&ht,
                                    ima&e: AssetIma&e(
                                        'assets/ima&e/'   data3   '-01.pn&'),
                                  ),
                                ),
                              ),
                              Container(
                                paddin&: Ed&eInsets.all(10),
                                child: Column(
                                  crossAxisAli&nment: CrossAxisAli&nment.start,
                                  children: <Wid&et&&t;[
                                    CachedNetworkIma&e(
                                      ima&eUrl:
                                          "https://trashmana&erapi.wazolab.dev/"  
                                              data1,
                                      placeholder: (_, s) =&&t; Center(
                                        child: CircularPro&ressIndicator(),
                                      ),
                                      fit: (BoxFit.cover),
                                    )
                                  ],
                                ),
                                
                              ),
                            ],
                          ),
                        ),
                      ),
                    ],
                  );
                },
              );
            } else {
              return Center(
                child: new CircularPro&ressIndicator(),
              );
            }
          }),
    );
  }
}
  

Комментарии:

1. Есть какие-либо обновления по этому поводу?