解析图像编解码器时抛出 ImageCodecException

ImageCodecException was thrown resolving an image codec

我正在为我的 flutter pwa 使用 1.27.0-4.0.pre sdk 版本。在升级之前,我使用了 1.24.0-10.2.pre sdk 版本。在 1.24.0-10.2.pre 版本中,一切都很好,我在使用 Image.network 显示 svg 图像时没有任何问题。但是现在当我启动我的 pwa None 时,我的图像会显示出来 ?

此读取平方器出现而不是图像。我在控制台上收到此错误:

══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
The following ImageCodecException was thrown resolving an image codec:
Failed to decode image data.
Image source: http://localhost:33033/assets/svgs/splash.svg

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49      throw_
lib/_engine/engine/canvaskit/image.dart 102:7                                     createDefault
lib/_engine/engine/canvaskit/skia_object_cache.dart 141:41                        new
lib/_engine/engine/canvaskit/image.dart 92:3                                      decodeFromBytes
lib/_engine/engine/canvaskit/image.dart 75:53                                     <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 324:14  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 329:39  dcall
dart-sdk/lib/html/dart2js/html_dart2js.dart 37283:58                              <fn>
dart-sdk/lib/async/zone.dart 1370:13                                              _rootRunUnary
dart-sdk/lib/async/zone.dart 1265:19                                              runUnary
dart-sdk/lib/async/zone.dart 1170:7                                               runUnaryGuarded
dart-sdk/lib/async/zone.dart 1207:26                                              <fn>

Image provider: NetworkImage("assets/svgs/splash.svg", scale: 1)
Image key: NetworkImage("assets/svgs/splash.svg", scale: 1)

当我在 chrome 上打开 http://localhost:33033/assets/svgs/splash.svg 时,此图像存在并已加载。什么问题?

Flutter 默认 支持 SVG。如果它在过去有效,您可能使用的是 HTML 网络渲染器,您可以在其中稍微使用 SVG,但它不是这样做的,因此存在问题。

我看到您现在正在使用 CanvasKit 渲染器,它处理图像的方式可能与 HTML 渲染器不同,并且消除了使用 SVG 的任何可能性。

您可以使用 flutter_svg 包并仅使用 CanvasKit 渲染器来可靠地使用 SVG。