首页 > 解决方案 > 为什么背景过滤器无法正常工作

问题描述

我试图在颤振中实现背景过滤器,但它不起作用。

ClipRect(
    child:BackdropFilter(filter:ui.ImageFilter.blur(
    sigmaX: 5.0,
    sigmaY: 5.0,
      ),
     child: Container( 
     child: (Image.file(
     _image,
     height: 400,
     width: 400,
     fit: BoxFit.cover,
               )),
            ),
           ),
         )

标签: flutterdartfilter

解决方案


您必须使用堆栈并将其ImageFilter放在要模糊的图像顶部,或者您可以使用该colorBlendMode:属性。

Container(
                              child: (Image.file(
                                _file,
                                height: 400,
                                colorBlendMode: BlendMode.overlay,
                                color: Colors.grey.withOpacity(0.5),
                                width: 400,
                                fit: BoxFit.cover,
                              )),
                            ),
                          ),

带堆栈 -

          child: ClipRect(
            child: Stack(
              children: <Widget>[
                Card(
                  margin: EdgeInsets.only(right: 20),
                  elevation: 16,
                  shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(20)),
                  child: Container(
                    height: 220 * _zoomAnim.value,
                    width: 150,
                    decoration: BoxDecoration(
                        borderRadius: BorderRadius.circular(20),
                        image: DecorationImage(
                            fit: BoxFit.fitHeight,
                            image: AssetImage('images/tour$index.jpg'))),
                  ),
                ),
                Container(
                  height: 220,
                  width: 150,
                  child: BackdropFilter(
                    child: Container(
                      decoration: BoxDecoration(
                          color: Colors.black.withOpacity(0.2),
                          borderRadius: BorderRadius.circular(20)),
                    ),
                    filter: ImageFilter.blur(sigmaX: 1, sigmaY: 0),
                  ),
),)...]))

推荐阅读