You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用Stack实现Widget局部模糊时出现全屏模糊的问题

解决BackdropFilter模糊溢出Positioned范围的问题

问题出在BackdropFilter的模糊效果会默认超出父组件的布局边界——哪怕你用Positioned指定了顶部区域的尺寸,它还是会对整个屏幕范围内的内容应用模糊。

只需要给Positioned的子组件套一层ClipRect,就能把模糊效果限制在你设定的区域内:

return Scaffold(
  body: Stack(
    children: [
      Padding(
        // 你的内容
      ),
      Positioned(
        top: 0,
        bottom: height * 0.85,
        right: 0,
        left: 0,
        child: ClipRect(
          child: BackdropFilter(
            filter: ui.ImageFilter.blur(
              sigmaX: 5, sigmaY: 5,
            ),
            child: Container(color: Colors.transparent),
          ),
        ),
      )
    ],
  ),
);

ClipRect的作用是将子组件的绘制区域严格裁剪到父组件(这里就是Positioned定义的顶部小块)的边界内,这样BackdropFilter的模糊就只会作用在这个限定区域,不会扩散到全屏。

内容的提问来源于stack exchange,提问作者Geremia Moretti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 18:33:12