BackdropFilter模糊效果未作用于Image组件问题求助
问题原因与解决方案
问题根源
BackdropFilter的作用是模糊它下方的内容,而非直接模糊它的child组件。你当前的写法里,Image作为BackdropFilter的子组件,只会让Image下方的元素被模糊,Image本身不会受到模糊效果影响。
解决方案一:直接模糊图片(推荐)
使用ImageFiltered组件,它的作用就是直接对其子组件应用滤镜效果,代码如下:
ImageFiltered( imageFilter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), child: Image.file( File(imagePath), fit: BoxFit.cover, ), )
解决方案二:用BackdropFilter实现背景模糊
如果确实需要用BackdropFilter(比如要在模糊后的图片上叠加其他内容),可以将图片作为背景放在Stack底层,BackdropFilter放在上层,示例代码:
Stack( children: [ // 作为背景的图片 Image.file( File(imagePath), fit: BoxFit.cover, width: double.infinity, height: double.infinity, ), // 模糊背景的滤镜 BackdropFilter( filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), child: Container( color: Colors.transparent, // 透明容器占位,让滤镜覆盖整个区域 ), ), // 可以在这里添加其他需要放在模糊背景上的组件 ], )
内容的提问来源于stack exchange,提问作者Karol Wiśniewski
相关产品推荐
相关产品推荐

