【发布时间】:2020-02-08 12:14:43
【问题描述】:
我想为我的应用创建一张简单的个人资料图片。 我认为它会像这样工作,但是在调用它时会引发异常,我 不知道为什么。
Widget _buildProfilePicture(double size) {
if (user.profileImage != null) {
return ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: Image.memory(
user.profileImage,
width: size,
height: size,
),
);
}
}
属性user.profileImage 的数据类型为Uint8List。
当我调用它时,它会抛出这个异常:
════════ Exception caught by image resource service ════════════════════════════════════════════════
The following _Exception was thrown while resolving an image:
Exception: Could not instantiate image codec.
When the exception was thrown, this was the stack:
#0 _futurize (dart:ui/painting.dart:4304:5)
#1 instantiateImageCodec (dart:ui/painting.dart:1682:10)
#2 PaintingBinding.instantiateImageCodec (package:flutter/src/painting/binding.dart:88:12)
#3 MemoryImage._loadAsync (package:flutter/src/painting/image_provider.dart:714:18)
#4 MemoryImage.load (package:flutter/src/painting/image_provider.dart:706:14)
...
Image provider: MemoryImage(Uint8List#2592a, scale: 1.0)
Image configuration: ImageConfiguration(bundle: PlatformAssetBundle#633d8(), devicePixelRatio: 2.6, locale: en_US, textDirection: TextDirection.ltr, size: Size(50.0, 50.0), platform: android)
Image key: MemoryImage(Uint8List#2592a, scale: 1.0)
我认为是Image.memory引起的。
提前感谢您的回答!
【问题讨论】:
-
它可能不是受支持的格式之一,例如 BMP、PNG 或 JPEG。
-
我从服务器检索我的图像,我得到
content-type: [image/png]作为内容类型,所以它应该是 png 对吗? -
user.profileImage的前 8 个字节是什么?十六进制?是89 50 4E 47 0D 0A 1A 0A吗?如果不是,请将它们与en.wikipedia.org/wiki/List_of_file_signatures 进行比较 -
如果图片来自网络,请尝试
Image.network -
好的,所以我认为可能是我从服务器获取的图像已损坏,但我还不太确定。
标签: image exception flutter dart