android - Flutter mask 一个圆圈变成一个容器

标签 android flutter skia

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

如您所见,白色圆圈自然会延伸红色容器,但相反,我试图让它留在边界内。我该怎么做?

最佳答案

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

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为此。

关于android - Flutter mask 一个圆圈变成一个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639066/

相关文章:

c++ - 为什么要在类中创建函数指针结构?

java - 多用户聊天中的 smack 状态监听器

java - 从 GridViewAdapter 获取图像时出错

android - Android Lollipop 及更高版本上的语音通话录音无法正常工作

android recyclerview 准确滚动到项目的开头

flutter - 在 Flutter 中添加 image_picker 依赖报错

firebase - 如何订阅 flutter FCM 中的主题?

flutter - 为什么我的 Flutter BottomSheet 会出现 GestureDetector 错误?

c++ - 使用 SkBounder 进行 Skia HitTest

linux - 在 Linux 上构建 Skia 时出现的问题