扑将圆圈圈入容器

时间:2018-12-05 19:00:37

标签: android flutter skia

我想在容器上添加圆形效果,但是我希望圆形不扩展容器的尺寸,而是被容器剪裁。这是我要实现的目标: enter image description here

如您所见,白色圆圈自然会扩展红色容器,但我正在尝试使其保留在边界内。我该怎么做?

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用重叠和裁剪。

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将其切回到边缘。

仅供参考-在我的设备上,我在白色圆圈的顶部和底部出现一条细小的红线。我相当确定这是最近出现的抖动问题,因为如果在容器周围放置白色边框,我也会看到类似的东西。为此,我提出了an issue on github

答案 1 :(得分:1)

ClipRRect对我来说效果最好。

参见参考视频:https://www.youtube.com/watch?v=eI43jkQkrvs&vl=en

ClipRRect(
  borderRadius: BorderRadius.cirular(10),
  child: myContainerWithCircleWidget,
);