Flutter mask 一个圆圈变成一个容器
Flutter mask a circle into a container
我想在容器上添加圆形效果,但我希望圆形不会扩展容器的尺寸,而是被它剪裁。这就是我想要实现的目标:
如您所见,白色圆圈自然会延伸红色容器,但相反,我试图让它留在边界内。我该怎么做?
最简单的方法是使用重叠和剪裁。
class OverlapSquare extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.red,
),
child: ClipRect(
clipBehavior: Clip.hardEdge,
child: OverflowBox(
maxHeight: 250,
maxWidth: 250,
child: Center(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
),
),
),
),
),
);
}
}
OverFlowBox 允许圆圈在其父级边界之外绘制,然后 cliprect 将其切回到边缘。
仅供参考 - 在我的设备上,我在白色圆圈的顶部和底部看到一条细小的红线。我相当确定这是最近在 flutter 中引入的错误,因为如果我在容器周围放置一个白色边框,我也会看到类似的情况。我为此筹集了an issue on github。
ClipRRect 最适合我。
参见参考视频:https://www.youtube.com/watch?v=eI43jkQkrvs&vl=en
ClipRRect(
borderRadius: BorderRadius.cirular(10),
child: myContainerWithCircleWidget,
);
我想在容器上添加圆形效果,但我希望圆形不会扩展容器的尺寸,而是被它剪裁。这就是我想要实现的目标:
如您所见,白色圆圈自然会延伸红色容器,但相反,我试图让它留在边界内。我该怎么做?
最简单的方法是使用重叠和剪裁。
class OverlapSquare extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 200,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.red,
),
child: ClipRect(
clipBehavior: Clip.hardEdge,
child: OverflowBox(
maxHeight: 250,
maxWidth: 250,
child: Center(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
shape: BoxShape.circle,
),
),
),
),
),
);
}
}
OverFlowBox 允许圆圈在其父级边界之外绘制,然后 cliprect 将其切回到边缘。
仅供参考 - 在我的设备上,我在白色圆圈的顶部和底部看到一条细小的红线。我相当确定这是最近在 flutter 中引入的错误,因为如果我在容器周围放置一个白色边框,我也会看到类似的情况。我为此筹集了an issue on github。
ClipRRect 最适合我。
参见参考视频:https://www.youtube.com/watch?v=eI43jkQkrvs&vl=en
ClipRRect(
borderRadius: BorderRadius.cirular(10),
child: myContainerWithCircleWidget,
);