Image是一个用于展示图片的组件。支持 JPEG、PNG、GIF、Animated GIF、WebP、Animated WebP、BMP 和 WBMP 等格式。

Image 有许多的静态函数:

  • new Image.asset - 用于从资源目录的显示图片。
  • new Image.network - 用于从网络上显示图片。
  • new Image.file - 用于从文件里显示图片。
  • new Image.memory - 用于从内存里(Uint8List)显示图片。
// 资源图片
new Image.asset('imgs/logo.jpeg'),
//网络图片
new Image.network(
'https://flutter.io/images/homepage/header-illustration.png'),
// 本地文件图片
new Image.file(new File("/Users/gs/Downloads/1.jpeg")),
// Uint8List图片
new Image.memory(bytes),
//使用ImageProvider加载图片
new Image(image: new NetworkImage("https://flutter.io/images/homepage/screenshot-2.png"))

  

Image 有以下常用属性:

  • alignment → AlignmentGeometry - 图像边界内对齐图像。
  • centerSlice → Rect - 九片图像的中心切片。
  • color → Color - 该颜色与每个图像像素混合colorBlendMode。
  • colorBlendMode → BlendMode - 用于 color 与此图像结合使用。
  • fit → BoxFit - 图像在布局中分配的空间。
  • gaplessPlayback → bool - 当图像提供者发生变化时,是继续显示旧图像(true)还是暂时不显示(false)。
  • image → ImageProvider - 要显示的图像。
  • matchTextDirection → bool - 是否在图像的方向上绘制图像 TextDirection。
  • repeat → ImageRepeat - 未充分容器时,是否重复图片。
  • height → double - 图像的高度。
  • width → double - 图像的宽度。

圆角图片

Image 是不支持圆角和阴影的,目前可以通过使用 CircleAvatar 和 Container 实现。

var img = 'https://b-ssl.duitang.com/uploads/item/' +
'201602/15/20160215235057_EU3tS.thumb.700_0.jpeg'; new CircleAvatar(
backgroundImage: new NetworkImage(url),
radius: 100.0, // --> 半径越大,图片越大
),

  

使用 Container 实现,其原理是把图片放在 decoration 里,而不是 child 里,因为把图片放在 child 里并设置 borderRadius 时会出现一个图片穿透的问题,Container 还没有 overflow 属性。

new Container(
width: 200.0,
height: 200.0,
margin: const EdgeInsets.all(20.0),
decoration: new BoxDecoration(
color: Colors.white,
image: new DecorationImage(image: new NetworkImage(this.imgsrc), fit: BoxFit.cover),
shape: BoxShape.circle,
),
),

  

上面实现的都是一个圆形图片,下面的实现一个真正的圆角图片。

new Container(
width: 200.0,
height: 200.0,
margin: const EdgeInsets.all(20.0),
decoration: new BoxDecoration(
color: Colors.white,
image: new DecorationImage(image: new NetworkImage(this.imgsrc), fit: BoxFit.cover),
shape: BoxShape.rectangle, // <-- 这里需要设置为 rectangle
borderRadius: new BorderRadius.all(
const Radius.circular(20.0), // <-- rectangle 时,BorderRadius 才有效
),
),
),

  

最新文章

  1. Extjs扩展:封装Plupload
  2. 根据ID获取CEdit的句柄实例
  3. (1)建立一个名叫Cat的类: 属性:姓名、毛色、年龄 行为:显示姓名、喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输 出该对象的毛色和年龄,让该对象调用显示姓名和喊叫两个方法。
  4. HDU 3271-SNIBB(数位dp)
  5. Python 手册(一)
  6. easyui-treegrid移除树节点出错
  7. 初遇locust
  8. --@angularJS--独立作用域scope绑定策略之=符策略
  9. solr笔记之solr下载及安装
  10. Codeforces #402
  11. 【python】问题汇总
  12. 验证demo
  13. 【转】Ubuntu 64位系统安装交叉编译环境一直提醒 没有那个文件或目录
  14. 劈配 [多省省选] [BZOJ5251] [网络流]
  15. Hyperledger fabric-sdk-java Basics Tutorial(转)
  16. Leetcode 461.汉明距离 By Python
  17. The difference between Spring Tool Suite and Spring IDE
  18. FDLocalSQL
  19. 爬虫代理squid
  20. python的一个小原理

热门文章

  1. java生成HMACSHA256的方法
  2. 基于Hadoop爬虫网易云歌曲评论
  3. 第06组 Beta冲刺(4/5)
  4. em,rem,px的区别,以及实现原理?
  5. Grid数字或金额千分位或保留两位小数
  6. Spring 整合 myBatis
  7. cmd 连接oracle
  8. tomcat一闪而过,无法开启
  9. 记录一次使用iisnode部署node项目遇到的坑!
  10. CSP2019-终章:afo生活的开始