Image是一个罕用的控件,它能够帮忙咱们显示图片,图片的资源能够是来自网络、本地或者是内存。在挪动端的开发中会大量应用Image来展现一些图文,理解和把握Image控件是十分有必要的。

AssetImage 和 Image.asset

AssetImage是Flutter提供的一个能够从本地读取图片资源的类,咱们能够应用它来读取图片。同样Flutter还提供了Image.asset这个构造方法间接来帮忙咱们读取图片资源并返回一个Image对象。其实Image.asset是对AssetImage一层更高级的封装。

留神:要读取本地图片咱们首先须要在pubspec.yaml文件里配置本地图片资源的门路,咱们这里在assets这个字段下新增了- images/image_demo.jpg这个文件。后续将会有一篇专门的博客来解说资源的治理。

1. AssetImage

Image(    image: AssetImage("images/image_demo.jpg"),    width: 80,    height: 80,)

2. Image.asset

Image.asset(    "images/image_demo.jpg",    width: 80,    height: 80,)

两个办法都是传入一个本地文件门路就能够了。

NetworkImage 和 Image.network

NetworkImage是一个能够从网络下载图片的类,它自身是异步的。Image.network是对NetworkImage的封装,它须要传入一个URL地址就能够返回一个Image对象。这两个的设计跟AssetImageImage.asset的设计基本一致。
3. NetworkImage

Image(    image: NetworkImage("http://www.fulade.me/img/avatar.jpg"),    width: 80,    height: 80,)

4. Image.network

Image.network(    "http://www.fulade.me/img/avatar.jpg",    width: 80,    height: 80,)

Alignment

alignment是Image的一个很重要的参数,它能够帮忙咱们设置图片的地位。有以下几个枚举值

参数形容
topCenter居中靠上
topRight右上角
centerLeft居中靠左
center居中
centerRight居中靠右
bottomLeft居右下角
bottomCenter居中靠下
bottomRight居右下角

BoxFit

fit参数是很重要的布局参数,当咱们的图片内容跟Image设置的大小不齐全吻合的时候,fit的参数值BoxFit能够帮忙咱们做最优的调整和显示
5. BoxFit.contain
fit的默认值是BoxFit.contain。由下图咱们不难看出,BoxFit.contain会等比例缩放,放弃图片的原始的比例并且显示在Image内。

6. BoxFit.fill
由图可见BoxFit.fill会充斥整个容器,如果图片大小与容器不齐全吻合,可能会呈现拉伸。

7. BoxFit.cover
BoxFit.cover会放弃图片资源的大小,如果超过的局部会被裁掉不会显示。

8. BoxFit.fitWidth
BoxFit.fitWidth会使宽度充斥整个容器,高度会按比例缩放,图片不会被拉伸,超出容器的局部会被剪裁。

9. BoxFit.fitHeight
BoxFit.fitHeightBoxFit.fitWidth类似,高度会充斥整个容器,宽度会按比例缩放,图片不会被拉伸,超出容器的局部会被剪裁。

10. BoxFit.none
none示意没有设置显示策略,以原始大小居中来显示。

11. BoxFit.scaleDown
当图片资源大于容器的时候,成果相当于 BoxFit.none
当组件比图片小时,成果相当于 BoxFit.contain

对于加载过的图片Flutter是会帮忙咱们做内存缓存,最大缓存数量是1000,最大缓存内存空间是100M。

想体验以上的示例的运行成果,能够到我的Github仓库我的项目flutter_app->lib->routes->image_page.dart查看,并且能够下载下来运行并体验。