Flutter无法从url加载图像

????????? 图像资源服务捕获异常 ?????????????????????????????? 解析图像编解码器时抛出以下 ImageCodecException:无法加载网络图像。图片网址:https : //cdn.sportmonks.com/images/soccer/leagues/5.png
试图从另一个域加载图片?在以下位置找到答案:https :
//flutter.dev/docs/development/platform-integration/web-images

当我尝试演示 URL https://picsum.photos/250?image=9 时,它工作正常,但上面的 url 很好,所以可能是什么问题?

class ListRow extends StatelessWidget {
  final String name;
  final imageUrl;
  const ListRow({Key key, this.name, this.imageUrl}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Row(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisAlignment: MainAxisAlignment.start,
      children: <Widget>[
        Container(
          width: 18,
          height: 18,
          child: Image(
            image: NetworkImage(
                'https://cdn.sportmonks.com/images/soccer/leagues/5.png'),
          ),
        ),
        SizedBox(width: 10),
        Flexible(
          child: new Text(
            name,
            style:
                new TextStyle(fontWeight: FontWeight.bold, color: Colors.black),
          ),
        ),
      ],
    );
  }
}

回答

几个星期以来,当我尝试从频道运行应用程序时,我遇到了同样的错误。

我通过强制 Web 渲染器为 HTML 使其工作:

flutter run -d chrome --no-sound-null-safety --web-renderer=html

当您为 Web 构建应用程序时,您应该:

flutter build web --no-sound-null-safety --web-renderer=html

默认情况下 web 渲染器是auto,在桌面浏览器上选择canvaskit web 渲染器,在移动设备上选择html

如果您想完全避免这种情况,您可以继续使用betadev频道。


回答

因此,flutter web 升级了默认渲染(HTML)-> CanvasKit 并且它具有更好的性能。

您很可能会收到此错误,因为 CORS(可以检查 chrome 网络选项卡以确保)。

要解决它可以:

  1. 更新 cors 设置服务器端:https ://stackoverflow.com/a/66104543/4679965

  2. 使用旧渲染运行应用程序:

flutter run -d chrome --web-renderer html // to run the app

flutter build web --web-renderer html --release // to generate a production build
  1. 或者使用平台视图显示图像:
import 'dart:html';
import 'package:flutter/material.dart';
import 'dart:ui' as ui;

class MyImage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    String imageUrl = "image_url";
    // https://github.com/flutter/flutter/issues/41563
    // ignore: undefined_prefixed_name
    ui.platformViewRegistry.registerViewFactory(
      imageUrl,
      (int _) => ImageElement()..src = imageUrl,
    );
    return HtmlElementView(
      viewType: imageUrl,
    );
  }
}


以上是Flutter无法从url加载图像的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>