flutter实现圆角裁剪

正常情况,大家知道使用Container widget的BoxDecoration可以实现圆角功能,但是如果遇到比较复杂的布局的情况下,就不容易实现原来想要的效果了。比如下图是设计师给的效果图:

image.png

可以看到最上面车辆卡片是带有圆角的,这里实现是滚动效果是借助flutter_swiper插件实现,插件正常显示卡片是没有圆角效果,如果这时想借助Container widget的BoxDecoration可以实现圆角功能的话,你会发现并不起作用,所以有没有类似于css的overflow:hidden的widget呢实现裁剪功能呢?答案就是这个widget了:PhysicalModel
使用方法直接看下面代码:

  Widget get _swiper {
    return Container(
      margin: EdgeInsets.only(top: 20.0),
      padding: EdgeInsets.symmetric(horizontal: 20.0),
      decoration: BoxDecoration(
        boxShadow: [
          BoxShadow(
            // 实现阴影效果
            offset: Offset(0.0, 16.0),
            color: Color.fromRGBO(140,140,140,0.2),
            blurRadius: 8.0,
            spreadRadius: -9.0,
          ),
        ]
      ),
      child: PhysicalModel(
          color: Colors.transparent, //设置背景底色透明
          borderRadius: BorderRadius.circular(12),
          clipBehavior: Clip.antiAlias, //注意这个属性
          child: Container(
            height: 160,
            child: Swiper(
              itemBuilder: (BuildContext context, int index){
                return Container(
                  child: Text('卡片${index}'),
                  color: Colors.yellow,
                );
              },
              itemCount: 3,
              pagination: new SwiperPagination(),
            ),
          )
      ),
    );
  }

代码实现效果:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国庆后面两天在家学习整理了一波flutter,基本把能撸过能看到的代码都过了一遍,此文篇幅较长,建议保存(star...
    Nealyang阅读 4,387评论 1 17
  • 项目演示github地址 Flutter 的界面基本由Widgets组成,widget需要位于MaterialAp...
    wayDevelop阅读 2,686评论 1 1
  • 转自 Q吹个大气球Q 本文主要介绍了Flutter布局相关的内容,对相关知识点进行了梳理,并从实际例子触发,进一步...
    chilim阅读 1,964评论 0 17
  • 人性的弱点(无删改全译本) 2018-09-23 类天性至深的本质,就是渴求为人所重视。”他并不是说“希望”,或是...
    杨_4fca阅读 1,194评论 0 0
  • 临摹油画风景,喜欢这种氛围,只可惜临不出那种味道,光影感不足,然而越改越脏,不想改了。还是耐心不够啊。
    苹儿的涂画本阅读 657评论 0 1