在给定的代码中,凸起按钮上的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,
),
));
答案 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属性发生了某种变化,在转换元素后我们无法使用它