有与该主题相关的答案,但它们提供了解决方法,而不是解释。
为什么在需要ImageProvider的地方不能使用Image?从概念上讲,它们对我来说听起来是一样的。
child: new CircleAvatar(
backgroundImage: NetworkImage("https..."), // works
backgroundImage: Image.asset('images/image.png'), // error
),
尝试直接使用图像产生的错误是:
错误:参数类型'Image'不能分配给参数类型'ImageProvider'。
答案 0 :(得分:10)
图像提供程序是将图像提供给图像小部件。 ;D
图像提供者不一定在那里拥有图像,但它知道如何获取它。
如果您需要 Image
小部件,请使用以下其中之一:
Image.asset()
Image.network()
Image.file()
Image.memory()
如果您需要 ImageProvider
,请使用以下之一:
AssetImage()
NetworkImage()
FileImage()
MemoryImage()
如果您有一个 ImageProvider
对象并且想要一个 Image
小部件,请执行以下操作:
Image(
image: myImageProvider,
)
如果您有一个 Image
小部件并且需要它的 ImageProvider
,请执行以下操作:
myImageWidget.image
答案 1 :(得分:1)
图像是显示图像的小部件。
ImageProvider允许您在不知道最终资产确切位置的情况下识别图像。资产的位置将在以后有人要读取图像时解决。