前言
在UI开发中,设计稿中经常有既有边框,又有圆角的设计,在flutter中,设置圆角和边框都很简单,但是要把这两个合起来,则会出现圆角的部分的border展示不出来的问题
1、圆角+无边框
原理:设置圆角+设置子内容
ClipRRect(
borderRadius: BorderRadius.circular(20),
child:
Container(
width: 100,height: 100,
color: Colors.orange,)
)
2、展示有边框+无圆角
原理:设置边框+不设置子内容
Container(
padding: EdgeInsets.all(0.0),
height: 100,
width: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.orange,width: 5),
),
);
3、边框+填充颜色+无圆角
原理:设置边框+设置子内容
Container(
padding: EdgeInsets.all(0.0),
height: 100,
width: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.orange,width: 5),
),
child: Container(color: Colors.green),
);
4、展示圆角+边框+无填充
原理:设置圆角+边框,没有子内容
Container(
padding: EdgeInsets.all(0.0),
height: 100,
width: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.orange,width: 5),
borderRadius: BorderRadius.circular(20)
),
);
5、展示圆角+边框+有填充(有瑕疵)
5.0 容器子内容缩小显示,本身有颜色和背景,如果有子类且子类显示与要颜色区别,就会展示成5.1的用样子
Container(
padding: EdgeInsets.all(0.0),
height: 100,
width: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.orange,width: 5),
borderRadius: BorderRadius.circular(20),
color: Colors.green
),
);
5.1 填充部分的角没有被切除
原理:圆角边框一起设置
Container(
padding: EdgeInsets.all(0.0),
height: 100,
width: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.orange,width: 5),
borderRadius: BorderRadius.circular(20)
),
child: Container(color: Colors.green),
);
5.2 圆角处边框展示不全
原理:圆角套边框
ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Container(
padding: EdgeInsets.all(0.0),
height: 100,
width: 100,
decoration: BoxDecoration(
border: Border.all(color: Colors.orange,width: 5),
),
child: Container(color: Colors.green),
),
);
6、展示圆角+边框(完美),
原理:有圆角的大容器套小容器造一个假的边框,让父容器的颜色成为边框颜色
double border = 5;
double radius = 20;
ClipRRect(borderRadius: BorderRadius.circular(radius),
child: Container(color: Colors.orange,width: 100,height: 100,
padding: EdgeInsets.all(border),
child: ClipRRect(
borderRadius: BorderRadius.circular(radius-border),
child: Container(color: Colors.green,),),
),);