第二百回 如何获取App自身的信息

我们在上一章回中介绍了AspectRatio Widget相关的内容,本章回中将介绍剪裁类组件(Clip).闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在这里说的剪裁类组件主要是指对子组件进行剪裁操作,常用的剪裁类组件有ClipOval和ClipRRect。前者可以把子组件剪裁为圆形或者椭圆,后者可以把子组件
剪裁为圆角矩形。本章回中将介绍这两种组件的使用方法。

2. 使用方法

2.1 ClipOval

该组件主要用来把子组件剪裁成圆形或者椭圆,常用的属性如下:

  • clipper属性:主要用来控制剪裁的尺寸;
  • child属性:主要用来存放被剪裁的子组件;
    上面提到的clipper属性是可选属性,不给该属性赋值时使用默认的尺寸进行剪裁,我们也可以自定义一个剪裁类,在类中控制被剪裁组件的尺寸;

2.2 ClipRRect

该组件主要用来把子组件剪裁成圆角矩形,常用的属性如下:

  • clipper属性:主要用来控制剪裁的尺寸;
  • child属性:主要用来存放被剪裁的子组件;
  • borderRadius属性:主要用来控制圆角的半径大小;
    上面介绍的这三个属性中,前两个属性的功能和ClipOval组件中同名属性的功能相同,最后一个属性是ClipRRect组件特有的属性。

3. 示例代码

//剪裁成椭圆或者圆形形状
Container(
  width: 100, height: 100,
  color: Colors.grey,
  child: ClipOval(
    child: Image.asset("images/ex.png",width: 50,height: 80,),
  ),
),
//Avatar剪裁效果好
CircleAvatar(
  radius: 40,
  child: Image.asset("images/ex.png",width: 50,height: 80,),
),
//剪裁成椭圆或者圆形形状,使用自定义的剪裁尺寸,效果比默认的好一些
Container(
  width: 100, height: 100,
  color: Colors.grey,
  child: ClipOval(
    clipper: DIYCliper(),
    child: Image.asset("images/ex.png",width: 50,height: 80,),
  ),
),
//剪切成圆角矩形
Container(
  width: 100, height: 100,
  color: Colors.grey,
  child: ClipRRect(
  borderRadius: BorderRadius.circular(30),
  child: Image.asset("images/ex.png",width: 90,height: 90,),
  ),
),

//自定义剪裁的尺寸
class DIYCliper extends CustomClipper<Rect> {
   
  
  Rect getClip(Size size) {
   
    // TODO: implement getClip
    //从左上右下四个方向指定尺寸处剪裁
    return const Rect.fromLTRB(10, 10, 90, 90);

    //从左上指定尺寸处剪裁固定的宽度和高度
    // return Rect.fromLTWH(30, 0, 90, 90);
  }

  
  bool shouldReclip(covariant CustomClipper<Rect> oldClipper) {
   
    // TODO: implement shouldReclip
    return false;
  }
}

在上面的代码中,我们对同一张图片进行了剪裁,将该图片剪裁成了椭圆,圆形和圆角矩形。同时还使用自定义的剪裁类,在类中自定义剪裁尺寸。我们在关键的位置添加
了注释,这样方便大家理解代码。编译并且运行上面的程序,可以看到同一张图片的多种剪裁效果图,我们在这里就演示程序的运行结果了,建议大家自己动手去实践。

看官们,关于剪裁类组件相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关推荐

  1. 第二二七

    2023-12-11 06:30:04       48 阅读
  2. 第二一十

    2023-12-11 06:30:04       68 阅读
  3. 第二九十

    2023-12-11 06:30:04       45 阅读
  4. 第二一十四

    2023-12-11 06:30:04       58 阅读
  5. 第二一十三

    2023-12-11 06:30:04       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-11 06:30:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-11 06:30:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-11 06:30:04       82 阅读
  4. Python语言-面向对象

    2023-12-11 06:30:04       91 阅读

热门阅读

  1. 【前端设计模式】之迭代器模式

    2023-12-11 06:30:04       57 阅读
  2. 主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

    2023-12-11 06:30:04       59 阅读
  3. PHP基础 - 运算符

    2023-12-11 06:30:04       43 阅读
  4. android 13.0 Settings去掉二级三级菜单搜索功能

    2023-12-11 06:30:04       60 阅读
  5. SQLMap进阶使用

    2023-12-11 06:30:04       46 阅读
  6. prototype、__proto__、constructor、原型、原型链

    2023-12-11 06:30:04       67 阅读
  7. Kubernetes实战(十)-升级k8s集群

    2023-12-11 06:30:04       46 阅读