首页 > 解决方案 > Flutter 将一个圆圈掩入容器中

问题描述

我想在容器上添加圆形效果,但我希望圆形不扩展容器的尺寸,而是被它剪裁。这就是我想要实现的目标: 在此处输入图像描述

正如您所看到的,白色圆圈自然会扩展红色容器,但相反,我试图让它留在边界内。我该怎么做?

标签: androidflutterskia

解决方案


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

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

仅供参考 - 在我的设备上,我在白色圆圈的顶部和底部得到一条小红线。我相当确定这是最近在颤振中引入的错误,因为如果我在容器周围放置一个白色边框,我也会看到类似的东西。为此,我在 github 上提出了一个问题


推荐阅读