CachedNetworkImage ..引发HandshakeExceptionCERTIFICATE_VERIFY_FAILED

问题描述

每当我调用CachedNetworkImage并将URL放入imageUrl时,都会从Web服务器获取图片时出现的错误使我感到惊讶,

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

ps:暂时不要介意我的getData函数(),我只想显示一张图像,该图像与另一个小部件的参数一起传递

import 'dart:async';
import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:dio/adapter.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:project/controller/Login_API.dart';
import 'package:project/utils/url.dart';
import 'package:project/views/theme/style.dart';

class Historiquedetaille extends StatefulWidget {
  final String data1;
  final String data2;
  final String data3;
  Historiquedetaille({
    String data1,String data2,String data3,})  : this.data1 = data1,this.data2 = data2,this.data3 = data3;

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

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

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

  Future<String> getData() async {
    var token;
    var userId;
    await deCredentials().then((result) {
      token = result;
      
    });
    await readID().then((result) {
      userId = result;
    });
    Map<String,String> body = {
      'userId': userId,};
   
    var dio = Dio();
    (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
        (HttpClient client) {
      client.badCertificateCallback =
          (X509Certificate cert,String host,int port) => true;
      return client;
    };
    Response response = await dio.post(getpost,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(
          msg: "erreur du serveur",toastLength: Toast.LENGTH_SHORT,gravity: ToastGravity.TOP,timeInSecForIosWeb: 1,backgroundColor: Colors.blueGrey,textColor: Colors.white,fontSize: 16.0);
    }
    return "success";
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,title: Text(
          'Historique',style: TextStyle(color: blackColor),),backgroundColor: whiteColor,iconTheme: IconThemeData(color: blackColor),elevation: 2.0,body: FutureBuilder(
          future: this.getData(),builder: (context,projectSnap) {
            if (projectSnap.hasData) {
              return new ListView.builder(
                itemCount: 1,itemBuilder: (context,index) {
                  return Column(
                    children: <Widget>[
                      Card(
                        margin: EdgeInsets.all(10.0),elevation: 10.0,shape: RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(10.0)),child: Container(
                          child: Column(
                            children: <Widget>[
                              Container(
                                padding: EdgeInsets.all(20),child: Column(
                                  crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[
                                    Container(
                                      child: Column(
                                        crossAxisAlignment:
                                            CrossAxisAlignment.start,children: <Widget>[
                                          Text(
                                            data2,style: textStyle,],const Divider(
                                      color: Colors.white,height: 0,thickness: 0,indent: 0,endIndent: 0,decoration: BoxDecoration(
                                  image: DecorationImage(
                                    alignment: Alignment.centerRight,image: AssetImage(
                                        'assets/image/' + data3 + '-01.png'),Container(
                                padding: EdgeInsets.all(10),children: <Widget>[
                                    CachedNetworkImage(
                                      imageUrl:
                                          "https://trashmanagerapi.wazolab.dev/" +
                                              data1,placeholder: (_,s) => Center(
                                        child: CircularProgressIndicator(),fit: (BoxFit.cover),)
                                  ],);
                },);
            } else {
              return Center(
                child: new CircularProgressIndicator(),);
            }
          }),);
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...