flutter-设置圆角和边框

8,290 阅读2分钟

前言

平时开发中,对UI设置圆角和边框,那是非常常用的操作,例如:设置一个圆角边,设置一个圆形头像,设置下划线等

设置圆角

flutter 中设置圆角常用的有两种方式(设置图片圆形背景不算):

ClipRRect: 通过 ClipRRect 剪裁 widget,来实现圆角功能,也能将范围内子视图剪裁,因此,带子视图的圆角操作非常常用,一般作为备用手段

decoration: 通过 Containerdecoration 属性设置圆角,此操作,只能设置 Container视图的圆角信息,无法直接切割子视图信息,适合纯背景设置圆角,或者纯图片设置圆角推荐,如果层层包围的可以考虑ClipRRect 来使用

CircleAvatar: 看名字就知道,圆形头像,可以直接通过里面的childrenbackgroundImagebackgroundColor等参数设置圆形图像时力推

ClipRRect 的设置圆角代码,如下所示

ClipRRect(
  borderRadius: BorderRadius.circular(4),
  child: Image.asset(
    widget.subImageUrl!,
    width: 20,
    height: 20,
    fit: BoxFit.fitWidth,
  )
)

decoration的设置圆角如下所示(设置了就不能使用Containercolor)

//顺便提一下,设置圆角边框,可以使用Container的decoration功能
Container(
  width: 20,
  height: 20,
  //设置了 decoration 就不能设置color,两者只能存在一个
  decoration: BoxDecoration(
    color: Colors.red, //设置背景颜色
    image: DecorationImage(image: AssetImage('images/WechatIMG21002.jpeg')), //设置图片
    image: DecorationImage(image: NetworkImage("http://12312.png")), //设置网络图片
    borderRadius:const BorderRadius.all(Radius.circular(6))
  )
)

CircleAvatar的设置圆角如下所示,直接图片或者颜色

//这里设置了背景图片,可以使用其他的纯色
CircleAvatar(
    backgroundImage: NetworkImage(item.imgUrl)
),

设置边框

相信看到了上面 decoration 就能联想到边框的设置,就是在 decoration中设置

decoration 中有多个属性,包括 ColorimageborderborderRadius

color: 设置背景,代替了 Container中的color,这也解决了 Container中不能设置 Color 的问题

border: 设置边框,通过该属性,使用Border类可以设置各个边的线条颜色宽度风格,即 colorwidthstyle

borderRadius: 同理,通过该属性,使用BorderRadius的only,参数设置各个角的弧度(实际为px)等,也可以通过上面的 all设置所有角落一样

//顺便提一下,设置圆角边框,可以使用Container的decoration功能
Container(
  width: 20,
  height: 20,
  //设置了 decoration 就不能设置color,两者只能存在一个
  decoration: BoxDecoration(
      border: Border(left: BorderSide(width: 1, color: Colors.red)),
      borderRadius: BorderRadius.only(topLeft: Radius.circular(2))
  )
)

虚线边框在系统中没看到,可以使用 dotted_border,简单粗暴