使用 canvaskit 进行 Flutter Web 构建:无法加载 Image.network()

2024-03-05

I can't use the image URL from my domain but I can use the image URL from another domain like Facebook. The error is: enter image description here

当将 StackOverflow 中的图像 URL 放入 Image.network() 时也会发生这种情况。例如,尝试使用上图(Image.network('https://i.stack.imgur.com/o6lwE.png')).

修复的基本方法是使用 HTML 呈现(flutter run -d chrome --web-renderer html)但我需要使用 toImage() 函数,并且使用 HTML 渲染不支持此函数。所以我用 Canvaskit 进行渲染。

这个链接(https://docs.flutter.dev/development/platform-integration/web-images#host-your-images-in-a-cors-enabled-cdn https://docs.flutter.dev/development/platform-integration/web-images#host-your-images-in-a-cors-enabled-cdn)可以帮助使用 Firebase 的人,但我正在使用 Ubuntu 和 Apache。

其实我想用HTML渲染,因为用Canvaskit渲染后遇到了很多问题。

使用 HTML 渲染案例:如果有一个函数可以用来代替 toImage() 函数,请告诉我。

使用Canvaskit渲染案例:如果您知道如何使用Image.network()显示图像URL,请告诉我。

谢谢。


这个问题被StackOverflow的自动系统关闭了,所以我删除它并创建一个新的。

2天后,这就是我发现的。

  1. Use https://cors-anywhere.herokuapp.com/或创建您的代理。
  • click https://cors-anywhere.herokuapp.com/ https://cors-anywhere.herokuapp.com/并激活它。

  • 您的图像小部件如下所示:

    Image.network('https://cors-anywhere.herokuapp.com/$imageUrl')

  1. 使用 HtmlElementView(viewType: '$imageUrl')。
  • 将其添加到底部的analysis_options.yaml中。
analyzer:
  errors:
    undefined_prefixed_name: ignore
  • 将它们导入到您的 dart 文件中。
import 'dart:html';
import 'dart:ui' as ui;
  • 将其添加到initState() or Widget build(),这必须在之前使用 - 您的图像小部件如下所示:
ui.platformViewRegistry.registerViewFactory(
      $imageUrl,
      (int viewId) => ImageElement()
        ..style.width = 'auto' //or '0%'-'100%'
        ..style.height = 'auto' //or '0%'-'100%'
        ..src = $imageUrl,
    );
  • 您的图像小部件如下所示:
HtmlElementView(viewType: $imageUrl)
  1. 使用.htaccess
  • 通过 open 激活 .htaccess/etc/apache2/apache2.conf in <Directory /var/www/>标记、更改AllowOverride None to AllowOverride All.
  • 您必须通过在控制台中输入这些内容来启用 mod_headers。 启用 mod_headersa2enmod headers然后 重新启动阿帕奇sudo service apache2 restart.
  • 在根目录中创建 .htaccess(对我来说,在 HTML 文件夹中)
  • 通过将其添加到 .htaccess 文件中,允许跨域使用图像和画布。
<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    <FilesMatch "\.(avifs?|bmp|cur|gif|ico|jpe?g|jxl|a?png|svgz?|webp)$">
      SetEnvIf Origin ":" IS_CORS
      Header set Access-Control-Allow-Origin "*" env=IS_CORS
    </FilesMatch>
  </IfModule>
</IfModule>

在我看来:

  • 方法 1 修复起来既简单又快速。但暂时可用且有限(https://github.com/Rob--W/cors-anywhere/issues/301 https://github.com/Rob--W/cors-anywhere/issues/301)并且比其他方法慢,因为应用程序必须与此链接连接,并且该链接将获取您的图像 URL,然后将其发送回您的应用程序。如果我创建的网络看起来像这样,它会因为太多用户使用它而崩溃,对吧?
  • 方法 2 适用于其他域上的图像。但缺点是图像的宽度和高度很难确定。需要检查哪条边长最长才能设置此值..style. *longest * is '100%'短边是'auto'.
  • 方法 3 适合在其域中使用图像的人。

如果有一个包可以完成方法 2 之类的事情那就太好了。

您可以尝试使用您的 imageUrl:https://flutter-test-exam-bug.web.app/#/stackoverflow 72306043 https://flutter-test-exam-bug.web.app/#/stackoverflow_72306043

用于测试本地端对于 Flutter web (Canvaskit),请遵循this https://stackoverflow.com/a/66879350/17798537

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 canvaskit 进行 Flutter Web 构建:无法加载 Image.network() 的相关文章

  • GDPR、Cookies 同意横幅 Flutter web

    我正在使用 Flutter 构建我的网站 但网络编程对我来说非常陌生 我不太确定我到底理解 Cookie 是如何工作的 我仍然需要了解哪些 cookie 将写入何处 以及我从哪里获取这些 cookie 构建横幅来管理应该很容易 如果我没记错
  • 创建一个不依赖web的flutter项目

    我想使用VS在flutter中创建一个新项目 但我希望这个项目没有Web依赖 只是移动应用程序依赖 但每次我创建一个项目时 它都会给我Web依赖 而不是移动应用程序 例如 这是我得到的 这就是我想要的 您可以通过指定平台 使用 flutte
  • 使用自定义 Painter 在 Flutter 中遮盖两个图像

    你好 谁能告诉我为什么这个掩蔽尝试的背景是黑色的 这一定很接近 但我就是无法消除背景 我看到其他人提到过saveLayer rect paint 是这里的关键 因为它将整个画布矩形推入遮罩操作 这个问题 无屏蔽操作 和this one 没有
  • Flutter Web Http 错误:未捕获(承诺中)错误:XMLHttpRequest 错误

    我正在尝试开发一个 flutter 应用程序 它将 http 请求发送到托管在 000webHost 上的远程 php 文件 当我为桌面构建 Flutter 应用程序时 我设法检索信息 一切都很好 但是 由于另一个问题 视频播放器不适用于桌
  • 使两个角圆化和两个直切而不是颤振中的曲线

    我怎样才能在颤振中制作下面的瓷砖状设计 两侧有一点弯曲 两侧的其余部分是直线切割的柔和曲线 我可以制作两个圆角和两个非圆角 但无法制作如下所示的一个 任何人都知道如何制作这样的瓷砖 我已经使用了 RoundRect ClipRRect 和
  • 将 Uint8List 转换为文件

    我正在使用图像选择器网络 效果很好 我可以在中显示图像Image memory 但是此图像的格式为 Uintlist8 为了保存在存储需要格式File 我的问题是如何将图像保存在Firebase 存储 网页图像选择器 class Secon
  • 当我查看包含 YoutubePlayerController 的页面时,下一页停止工作

    Problem 加载 YoutubePlayerIFrame 后下一页的小部件将不起作用 例如 假设您有 A 和 B 有状态小部件 首先加载 A 其中YoutubePlayerIFrame叫做 您可以按 A 中的按钮 但是当您移动到 B 时
  • 如何更改 Flutter Web 中的 chrome 标题颜色?

    顶部带有链接 URL 的标题的默认颜色是蓝色 有人知道如何更改它的颜色吗 将此元标记放在index html 文件中的 head 标记之间 它将更改您的移动浏览器的顶部菜单颜色
  • Flutter Web:如何检测 AppLifeCycleState 更改

    我测试了AppLifeCycleState在 flutter web 上 它在移动平台上工作时不起作用 这是一issue https github com flutter flutter issues 53107目前正在研究这个问题 我想知
  • 在 StreamBuilder 中使用选择器(提供程序)时重建不必要的小部件

    我正在使用一个Selector当 Bloc 中的数据发生更改时会重建 这很好 但是当数据发生变化时 它会重新加载整个树 而不仅仅是选择器内的构建器 就我而言 选择器位于 StreamBuilder 内 我需要这个 因为流已连接到 API 因
  • 如何在flutter web中添加自定义字体?

    所以我现在正在开发 flutter 移动应用程序一段时间了 我想探索 flutter web 现在我尝试添加自定义字体 但它没有显示自定义字体 我已经添加了所有依赖项 并为字体创建了一个单独的文件夹 并将其添加到 pubspec yaml
  • 如何从 Flutter-web 中的小部件创建图像?

    在谷歌地图上显示自定义小部件谷歌地图颤振 https pub dev packages google maps flutter我使用一个非常方便的功能来翻译任何Widget 包括那些包含图像的 到Image 然后我将其翻译成Uint8Lis
  • Flutter Web 应用程序在部署到 Firebase 托管后返回空白页面

    我已成功将我的 flutter Web 应用程序部署到 Firebase 托管 但是 当我访问链接时返回空白页面 这是我的 firebase json database rules database rules json firestore
  • Flutter Web:堆栈和耀斑问题

    我试图在 Flutter Web 开发频道 v1 13 2 上创建一个简单的网页 但出现了这个奇怪的问题 当我尝试在堆栈小部件中放置耀斑动画时 该堆栈小部件分别有 2 个附加小部件 一个背景和一个居中文本 耀斑似乎没有出现 但是当我移除背景
  • 无法单独构建 Flutter Web 和 Flutter Mobile 应用

    我正在构建一个 flutter 项目 并且在将 Web 和移动代码集成到单个项目中时遇到问题 我想在我的移动代码中使用 Moor 和 Moor FFI 但即使我的 web main dart 和移动代码 main dev dart 的入口点
  • Flutter Web 调试正常,但构建 Web 显示空白页面

    flutter doctor result Flutter Channel dev 1 21 0 1 0 pre on Microsoft Windows Version 10 0 19041 388 locale en US Androi
  • flutter中的webview是否缓存网页?

    我想缓存在 flutter webview 中显示的网页 以便提高性能 无需重新加载页面 可以用吗 我可以实施吗 flutter inappwebview 前 flutter inappbrowser 有参数cacheEnabled默认为
  • Willpopscope 无法在 Web 上拦截浏览器后退按钮

    我尝试过拦截网络上的后退按钮 但它不会被触发 我怎样才能让它发挥作用 WillPopScope onWillPop print will pop on web Get offNamed orders return new Future gt
  • 如何从 Flutter Web 中的 URL 中删除哈希 (#)

    Flutter Web 项目的默认 URL 定义了包含主题标签的 URL 如下 http localhost 41521 peaple 我想删除这个 如下所示 http localhost 41521 peaple 我怎么解决这个问题 您现
  • 避免在 Flutter Web 插件包之外使用纯 Web 库

    我正在构建一个 Flutter 应用程序 并尝试在网络上运行 其中一部分包含一些特定于网络的代码 import dart html as html import package flutter foundation dart class D

随机推荐