flutter 学习(一)Image 组件

Image.asset 加载本地图片的时候如下:

Image.asset(
            "assets/images/sakura.jpg",
            width: width,
            fit: BoxFit.fitHeight,
          ),

图片的目录应该在pubspec.yaml 文件中 设置

 assets:
    - assets/images/

在这里插入图片描述
如果是这种的需要在文件中声明

assets:
    - images/logo.png
    - images/2.0x/logo.png
    - images/3.0x/logo.png

代码使用如下

new Image.asset('images/logo.png')

Image.network
加载网络图片

Image.file
加载本地file图片

new Image.network('http://n.sinaimg.cn/sports/2_img/upload/cf0d0fdd/107/w1024h683/20181128/pKtl-hphsupx4744393.jpg')

有的时候我们需要使用一个占位图或者图片加载出错时显示某张特定的图片,这时候需要用到 FadeInImage 这个组件(这个组件是不可以设置加载出错显示的图片):
有两种方式使用:
第一种 本地图片当做占位图

new FadeInImage.assetNetwork(
  placeholder: 'images/logo.png',
  image: imageUrl,
  width: 120,
  fit: BoxFit.fitWidth,
)

第二种 透明图片当做占位图

new FadeInImage.memoryNetwork(
  placeholder: kTransparentImage,
  image: imageUrl,
  width: 120,
  fit: BoxFit.fitWidth,
)

加载出错显示可以使用第三方 packageCachedNetworkImage 组件:

new CachedNetworkImage(
  width: 120,
  fit: BoxFit.fitWidth,
  placeholder: new CircularProgressIndicator(),
  imageUrl: imageUrl,
  errorWidget: new Icon(Icons.error),
)

Image.memory
用来将一个 byte 数组加载成图片,用法如下:

new Image.memory(bytes)

Text组件的API
API名称 功能

width & height	用来指定显示图片区域的宽高(并非图片的宽高)
fit	设置图片填充,类似于Android中的ScaleType
color & colorBlendMode	这两个属性需要配合使用,就是颜色和图片混合,就类似于Android中的Xfermode
alignment	用来控制图片摆放的位置
repeat	用来设置图片重复显示(repeat-x水平重复,repeat-y垂直重复,repeat两个方向都重复,no-repeat默认情况不重复)
centerSlice	设置图片内部拉伸,相当于在图片内部设置了一个.9图,但是需要注意的是,要在显示图片的大小大于原图的情况下才可以使用这个属性,要不然会报错
matchTextDirection	这个需要配合Directionality进行使用
gaplessPlayback	当图片发生改变之后,重新加载图片过程中的样式(1、原图片保留)

fit 属性中有很多值可以设置:

属性名称 样式

BoxFit.contain	全图居中显示但不充满,显示原比例
BoxFit.cover	图片可能拉伸,也可能裁剪,但是充满容器
BoxFit.fill	全图显示且填充满,图片可能会拉伸
BoxFit.fitHeight	图片可能拉伸,可能裁剪,高度充满
BoxFit.fitWidth	图片可能拉伸,可能裁剪,宽度充满
BoxFit.scaleDown	效果和contain差不多, 但是只能缩小图片,不能放大图片

图片设置圆角

使用裁剪来实现图片圆角:

new ClipRRect(
  child: Image.network(
    imageUrl,
    scale: 8.5,
    fit: BoxFit.cover,
  ),
  borderRadius: BorderRadius.only(
    topLeft: Radius.circular(20),
    topRight: Radius.circular(20),
  ),
)

使用边框来实现图片圆角:

new Container(
  width: 120,
  height: 60,
  decoration: BoxDecoration(
    shape: BoxShape.rectangle,
    borderRadius: BorderRadius.circular(10.0),
    image: DecorationImage(
        image: NetworkImage(imageUrl),
        fit: BoxFit.cover),
  ),
)

全屏显示

width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值