我从服务器获取了 avif 图像,但图像未显示。
我尝试过 Image.network() 和 CachedNetworkImage 显示 avif 图像。
Exception: Invalid image data
When the exception was thrown, this was the stack:
#0 _futurize (dart:ui/painting.dart:5326:5)
#1 ImageDescriptor.encoded (dart:ui/painting.dart:5194:12)
#2 instantiateImageCodec (dart:ui/painting.dart:2048:60)
<asynchronous suspension>
Image provider: NetworkImage("https://www.soppiya.com/media/images/610fc7bb172b28ecf8655216/item/6122493b75ca8186640a03ae/image1.avif?x=62433", scale: 1.0)
Image key: NetworkImage("https://www.soppiya.com/media/images/610fc7bb172b28ecf8655216/item/6122493b75ca8186640a03ae/image1.avif?x=62433", scale: 1.0)
这是一个能够对 AVIF 照片进行解码和编码的 Flutter 库。
没错,Flutter 本身目前还不支持 AVIF。这里有一个悬而未决的问题: https://github.com/flutter/flutter/issues/61229。如果 AVIF 支持对您很重要,那么您可以对该问题点赞,以帮助优先处理该问题。
正如对该问题的评论所解释的,Flutter 使用平台的解码器(如果存在)。因此,特别是对于 Android 12+,AVIF 将起作用。
正如另一个答案提到的(也在问题线程中),有一个第三方包为 Flutter 提供 AVIF 支持: https://pub.dev/packages/flutter_avif。因此,如果您需要 AVIF 支持,这是一个可以考虑的选项。