源码分析
class Image extends StatefulWidget {
Image.network(String src, {
Key key,
double scale = 1.0,
this.width,
this.height,
this.color,
this.colorBlendMode,
this.fit,
this.alignment = Alignment.center,
this.repeat = ImageRepeat.noRepeat,
this.centerSlice,
this.matchTextDirection = false,
this.gaplessPlayback = false,
Map<String, String> headers,
}) : image = new NetworkImage(src, scale: scale, headers: headers),
assert(alignment != null),
assert(repeat != null),
assert(matchTextDirection != null),
super(key: key);
......
我们看到Image是一个StatefulWidget对象,可以直接放到Container或者Column等容器里,其属性解释如下:
width:widget的宽度
height:widget的高度
color:与colorBlendMode配合使用,将此颜色用BlendMode方式混合图片
colorBlendMode:混合模式算法
fit:与android:scaletype一样,控制图片如何resized/moved来匹对Widget的size
alignment:widget对齐方式
repeat:如何绘制未被图像覆盖的部分
centerSlice:支持9patch,拉伸的中间的区域
matchTextDirection:绘制图片的方向:是否从左到右
gaplessPlayback:图片变化的时候是否展示老图片或者什么都不展示
headers:http请求头
image:一个ImageProvide对象,在调用的时候已经实例化,这个类主要承担了从网络加载图片的功能。它是加载图片的最重要的方法,不同的图片加载方式(assert文件加载、网络加载等等)也就是重写ImageProvider加载图片的方法(load())。
Image是一个StatefulWidget对象,所以我们看它的State对象: