NetworkImage和Image.network的区别?
问题内容:
两者有什么区别吗?
缺点是什么?在正常情况下哪个更容易使用?
问题答案:
两者有什么区别吗?
是。它们不一样。
- NetworkImage类创建一个对象,该对象从
src
传递给它的URL中提供图像。它不是小部件,也不会在屏幕上输出图像。 - Image.network创建一个在屏幕上显示图像的小部件。它只是Image类(有状态的小部件)上的命名构造函数。它
image
使用设置属性NetworkImage
。该image
属性最终用于显示图像。
class Image extends StatefulWidget{
Image(...){}; //default Constructor
//the argument src is passed to the NetworkImage and assinged to the image property
Image.network(String src, {...}) : image = NetworkImage(src, ...);
final ImageProvider image;
@override
Widget build(BuildContext context){
display the image
return RawImage(image: image,
...
);
}
}
缺点是什么?在正常情况下哪个更容易使用?
没有缺点。您应该使用适合需要的那一种。例如考虑:
- 显示显示代表用户的圆圈的CircleAvatar小部件
backgroundImage
。它需要一个ImageProvider。所以你通过NetworkImage(http://image.com)
- 在原始图像加载时显示占位符的FadeInImage也具有
ImageProvider
其image
属性。所以你可以提供它NetworkImage(http://image.com)
。
如果您只想在屏幕上将图像显示为小部件,请在Image.network
需要的NetworkImage
地方使用ImageProvider
。