如何解决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 举报,一经查实,本站将立刻删除。