Flutter OnPressed在转换小部件后不在堆栈小部件内工作

Flutter OnPressed在转换小部件后不在堆栈小部件内工作,flutter,Flutter,在给定的代码中,按下凸起的按钮可以工作,并将扁平按钮转换到顶部。但按下扁平按钮不起作用 @override Widget build(BuildContext context) { return Stack( children: <Widget>[ Transform( transform: Matrix4.translationValues( 0.0, _translateB

在给定的代码中,按下凸起的按钮可以工作,并将扁平按钮转换到顶部。但按下扁平按钮不起作用

@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'))
      ],
    );
  }
@覆盖
小部件构建(构建上下文){
返回堆栈(
儿童:[
转化(
转换:Matrix4.translationValues(
0.0,
_translateButton.value,
0.0,
),
孩子:扁平按钮(
已按下:(){
打印(“轻敲的扁平按钮”);
},
子级:文本('upper'),
),
),
升起的按钮(
已按下:(){
制作动画();
打印(“点击凸起按钮”);
},
子项:文本('lower'))
],
);
}
这里_translatebutton值在调用animate()时从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,
      ),
    ));
\u animationController=animationController(vsync:this,duration:duration(毫秒:500))
…addListener(){
setState((){});
});
_translateButton=吐温(
开始:0,
完:-60,
).动画(曲线动画)(
父项:_animationController,
曲线:区间(
0.0,
0.75,
曲线:_曲线,
),
));

将转换小部件包装在一个大小合适的框中(根据您的要求展开或从大小展开。

我得到的答案是,在视图中,如果元素被翻译,则动画工作正常,但在翻译元素后,单击属性以某种方式被更改,我们无法使用它。

我上周遇到了这个问题;在我的情况下,构图是这样的:

 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关于发行号的建议:::

我将我的“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"),
                      ),
                    ),
                  ),
                ],
              ),
            ),
          ),
         ],
        )

尝试了
AnimatedAlign
?“Align的动画版本,该版本在给定对齐方式更改时在给定的持续时间内自动转换子对象的位置”@pskink我无法使用
AnimatedAlign控制动画的开始,它“在给定对齐方式更改时开始”现在什么工作?
Transform
使用
Matrix4.translationValue
?您指的是什么按钮?顺便问一下,为什么不使用
Transform.translate