转换窗口小部件后,OnPressed在堆栈窗口小部件内不起作用

时间:2018-11-29 13:52:35

标签: flutter

在给定的代码中,凸起按钮上的onPressed起作用并将FlatButton转换到顶部。但是FlatButton上的onPressed无法正常工作

@override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Transform(
          transform: Matrix4.translationValues(
            0.0,
            _translateButton.value,
            0.0,
          ),
          child: FlatButton(
            onPressed: () {
              print('tapped Flat button');
            },
            child: Text('upper'),
          ),
        ),
          RaisedButton(
            onPressed: () {
              animate();
              print('tapped Raised button');
            },
            child: Text('lower'))
      ],
    );
  }

在调用animate()时,_translatebutton的值从0更改为-60

 _animationController = AnimationController(vsync: this, duration: Duration(milliseconds: 500))
      ..addListener(() {
        setState(() {});
      });
    _translateButton = Tween<double>(
      begin: 0,
      end: -60,
    ).animate(CurvedAnimation(
      parent: _animationController,
      curve: Interval(
        0.0,
        0.75,
        curve: _curve,
      ),
    ));

3 个答案:

答案 0 :(得分:1)

我上周遇到了这个问题;就我而言,组合是这样的:

 Stack(
    children: [
      Widget0,
      Widget1,
      Opacity(
            opacity: sth,
            child: Transform.translate(
              offset: Offset(sth),
              child: Transform.rotate(
                angle:sth,
                child: FlatButton(
                  onPressed: (){sth},
                  child: Text("sth"),
                ),
              ),
            ),
          ),
         ],
        )

:::基于rahulthakur319对问题编号27587::

的建议

我将我的“Transfor.translate”组合包裹在一个新的堆栈中,并将堆栈包裹在一个容器中。请记住,新容器应具有足够的宽度和高度以显示其子项。我个人使用 MediaQuery.of(context).size。 即使在复杂的动画系列中也能正常工作。 最终代码:

Stack(
    children: [
      Widget0,
      Widget1,
      Opacity(
            opacity: sth,
            child: Container(
              width: MediaQuery.of(context).size.width,
              height: MediaQuery.of(context).size.height,
              child: Stack(
                children: [
                  Transform.translate(
                    offset: Offset(sth),
                    child: Transform.rotate(
                      angle: sth,
                      child: FlatButton(
                        onPressed: (){sth},
                        child: Text("sth"),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),
         ],
        )

答案 1 :(得分:0)

将Transform小部件包装在SizedBox中(根据您的需要扩展或缩放)。

答案 2 :(得分:0)

我得到的答案是,在View中,如果元素被翻译,则动画可以正常工作,但是click属性发生了某种变化,在转换元素后我们无法使用它