创建内部有透明孔的小部件

问题描述 投票:0回答:1

如何创建一个半透明的背景,内部有透明孔?我尝试将装饰和前景装饰与不同的混合模式,堆栈,ClipRect,滤色器一起使用,但没有任何效果。我将不胜感激。谢谢!

Semi-transparent background with transparent hole inside

flutter flutter-layout flutter-widget
1个回答
0
投票

我发现做到这一点的“最简单”方法是将ColorFiltered WidgetStack一起使用。

以下代码将完全满足您的需求:

@override
Widget build(BuildContext context) {
return Material(
  child: Stack(
    fit: StackFit.expand,
    children: [
      Image.network(
        'https://wallpaperplay.com/walls/full/e/5/3/13586.jpg',
        fit: BoxFit.cover,
      ),
      ColorFiltered(
        colorFilter: ColorFilter.mode(
            Colors.black.withOpacity(0.8), BlendMode.srcOut), // This one will create the magic
        child: Stack(
          fit: StackFit.expand,
          children: [
            Container(
              decoration: BoxDecoration(
                  color: Colors.black,
                  backgroundBlendMode: BlendMode.dstOut), // This one will handle background + difference out
            ),
            Align(
              alignment: Alignment.topCenter,
              child: Container(
                margin: const EdgeInsets.only(top: 80),
                height: 200,
                width: 200,
                decoration: BoxDecoration(
                  color: Colors.red,
                  borderRadius: BorderRadius.circular(100),
                ),
              ),
            ),
            Center(
              child: Text(
                'Hello World',
                style: TextStyle(fontSize: 70, fontWeight: FontWeight.w600),
                ),
              )
            ],
          ),
        ),
      ],
    ),
  );
}

您不仅可以在视图上创建“孔”,还可以使用任何东西!包括文字等。

最终结果:

Mask Out

© www.soinside.com 2019 - 2024. All rights reserved.