每当我调用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),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
CachedNetworkImage(
imageUrl:
"https://trashmanagerapi.wazolab.dev/" +
data1,
placeholder: (_, s) => Center(
child: CircularProgressIndicator(),
),
fit: (BoxFit.cover),
)
],
),
),
],
),
),
),
],
);
},
);
} else {
return Center(
child: new CircularProgressIndicator(),
);
}
}),
);
}
}