为什么背景滤镜无法正常工作?

时间:2020-06-15 11:36:19

标签: flutter dart filter

我试图在抖动中实现背景滤镜,但这是行不通的。

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,
               )),
            ),
           ),
         )

2 个答案:

答案 0 :(得分:1)

您必须使用堆栈并将import React, { Component } from 'react' import Axios from 'axios'; export default class ChatBox extends Component { constructor(props) { super(props); const { rName, name } = this.props.match.params; this.state = { rName, name, message: '' } console.log('called'); } componentDidMount(){ const {rName, name} = this.state; this.ws = new EventSource(`http://localhost:1337/event-stream/?rName=${rName}&name=${name}`); this.ws.onmessage = function (event) { console.log('called'); } } handleInput = (event) => { this.setState({ ...this.state, [event.target.name]: event.target.value }) } handleSubmit = (event) => { event.preventDefault(); const { rName, name, message } = this.state; Axios.post('http://localhost:1337/message', { rName, name, message }); } render() { return ( <div> <form onSubmit={this.handleSubmit}> <label>New Message</label> <input type="text" name="message" onChange={this.handleInput} /> <button className="btn">Send</button> </form> </div> ) } } 放在要模糊的图像上方,否则可以使用ImageFilter属性。

colorBlendMode:

带堆栈-

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

答案 1 :(得分:1)

只需将它们包装成一个堆栈并像这样设置图像后面容器的高度:

请注意,在下面的代码中,我模糊了除图像之外的整个屏幕。 您可以通过设置容器的大小来更改模糊部分的大小。

    Stack(
     children : [
       BackdropFilter(
              filter: ImageFilter.blur(
                sigmaX: 5.0,
                sigmaY: 5.0,
              ),
              child: Container(
                height: MediaQuery.of(context).size.height
                color: Colors.white.withOpacity(0.4),
              ),
            ),
            Container(
              height: MediaQuery.of(context).size.height,
              child: Center(
                child: ClipRRect(
                  borderRadius: BorderRadius.circular(10.0),
                  child: Image.file(
                    _image,
                    height: 400,
                    width: 400,
                    fit: BoxFit.cover,
                  ),
                ),
              ),
            )
    ],)