Flutter Image.network(...) 抛出 HandshakeException

Jok*_*olf 4 dart flutter

几天前我开始使用 flutter 和 dart,到目前为止一切顺利。非常好的工具,但对于应用程序,我正在构建我需要来自网络服务器的图片,每当我尝试调用它时new Image.network(URL)抛出此异常:

握手异常:

Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED: unable to get local issuer certificate(ssl_cert.c:345)).
Run Code Online (Sandbox Code Playgroud)

如果有人可以帮助我,请提前致谢。

Kia*_*iax 10

一种跳过SSL认证问题并解决Image.network(url)问题的方法是使用以下代码:

import 'dart:io';

class MyHttpOverrides extends HttpOverrides{
  @override
  HttpClient createHttpClient(SecurityContext context){
    return super.createHttpClient(context)
      ..badCertificateCallback = (X509Certificate cert, String host, int port)=> true;
  }
}

void main(){
    HttpOverrides.global = new MyHttpOverrides();
    runApp(new MyApp());
}
Run Code Online (Sandbox Code Playgroud)

  • 这种方法不会产生漏洞吗?中间的男人之类的。 (4认同)

Shy*_*hil 0

这对我来说效果很好

var image = new Container(
    width: 100.0,
    height: 100.0,
    decoration: new BoxDecoration(
      borderRadius: new BorderRadius.circular(3.0),
      color: const Color(0xff7c94b6),
      image: new DecorationImage(
        image: new NetworkImage(
            "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRwlzVkvBV1EA_w87NFvYAhT-EC2HMRpfTuRFtHE7nXE5GPvnsQ"),
        fit: BoxFit.cover,
      ),
    ),
  );
Run Code Online (Sandbox Code Playgroud)

请同时检查此答案以添加 badCertificateCallback

_client = new HttpClient();
_client.badCertificateCallback = (X509Certificate cert, String host, int port) => true;
Run Code Online (Sandbox Code Playgroud)