Flutter BackdropFilter
BackdropFilter是 Flutter 中实现毛玻璃Glass Morphism、背景模糊、色彩滤镜等高级视觉效果的核心组件。它的作用是对其后方下层已渲染的所有内容应用滤镜再绘制自身的子组件。一、核心属性dartconst BackdropFilter({ Key? key, required ImageFilter filter, // 滤镜必选 BlendMode blendMode BlendMode.srcOver, // 混合模式 Widget? child, // 前景子组件通常是半透明容器 })filter(必选)定义滤镜效果。最常用ImageFilter.blur实现高斯模糊。child前景部件。必须设置通常是一个带极低透明度的Container否则滤镜效果不生效。blendMode滤镜结果与背景的混合方式默认srcOver即可。二、基础用法毛玻璃 / 高斯模糊关键要点必须配合Stack使用并必须用ClipRRect或ClipRect限制模糊范围否则会模糊整个屏幕。dartimport package:flutter/material.dart; import dart:ui; // 必须导入使用 ImageFilter class BackdropFilterDemo extends StatelessWidget { const BackdropFilterDemo({super.key}); override Widget build(BuildContext context) { return Scaffold( body: Stack( fit: StackFit.expand, children: [ // 1. 底层背景被模糊的对象 Image.network( https://picsum.photos/1080/1920, fit: BoxFit.cover, ), // 2. 模糊区域必须用 ClipRRect 限定圆角范围 Center( child: ClipRRect( borderRadius: BorderRadius.circular(20), // 与你之前问的 borderRadius 结合 child: BackdropFilter( // 模糊滤镜sigmaX/Y 越大越模糊 filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), // 关键子组件必须有透明度否则看不到模糊效果 child: Container( width: 300, height: 200, // 半透明颜色增强毛玻璃质感 color: Colors.white.withOpacity(0.1), alignment: Alignment.center, child: const Text( 毛玻璃效果, style: TextStyle(fontSize: 24, color: Colors.white), ), ), ), ), ), ], ), ); } }三、与ClipRRect结合你之前的问题将BackdropFilter作为ClipRRect的直接子组件即可实现带圆角的毛玻璃这是最常见的组合dartClipRRect( borderRadius: BorderRadius.circular(20), // 控制模糊区域的圆角 child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), child: Container( width: 300, height: 200, color: Colors.white.withOpacity(0.1), ), ), )四、其他滤镜效果除了模糊ImageFilter还提供其他滤镜位移ImageFilter.offset(5, 5)缩放ImageFilter.scale(1.5, 1.5)旋转ImageFilter.rotate(pi/4)矩阵变换ImageFilter.matrix(Matrix4.identity().storage)五、重要注意事项避坑必须有childBackdropFilter的child不能为null且通常需要半透明颜色否则滤镜不生效。必须裁剪不加ClipRRect/ClipRect会导致全屏模糊。性能开销大模糊是昂贵的操作Flutter。避免在ListView等滚动组件中大量使用。模糊值sigma不要过大建议 5~15。静态背景可预生成模糊图片替代。与Opacity冲突父组件有Opacity时可能导致显示异常需调整blendMode为BlendMode.srcFlutter。六、与ImageFiltered的区别BackdropFilter模糊背景后面的内容。ImageFiltered模糊自身子组件内容。总结BackdropFilterImageFilter.blurClipRRect是 Flutter 实现高级毛玻璃效果的黄金组合。核心就是控制模糊范围、设置半透明前景、注意性能优化。