Flutter 根据脚手架主体中的条件设置小部件动画
我有一个小部件,带有脚手架。他的身体是x部件,我如何在身体上的y部件而不是x部件中设置动画? 这些小部件如下所示:Flutter 根据脚手架主体中的条件设置小部件动画,flutter,animation,Flutter,Animation,我有一个小部件,带有脚手架。他的身体是x部件,我如何在身体上的y部件而不是x部件中设置动画? 这些小部件如下所示: Scaffold( body: condition ? X() : Y(), ) 当条件从true变为false或false变为true时,我希望Y或X小部件在中设置动画。如何执行此操作?您可以更改偏移量值以获得所需的结果 class Test extends StatefulWidget { @override _TestState createState() =&
Scaffold(
body: condition ? X() : Y(),
)
当条件从true变为false或false变为true时,我希望Y或X小部件在中设置动画。如何执行此操作?您可以更改
偏移量
值以获得所需的结果
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test>
with SingleTickerProviderStateMixin {
bool condition;
AnimationController _controller;
Animation<Offset> _offsetAnimation;
@override
void initState() {
condition = false;
_controller = AnimationController(
duration: const Duration(seconds: 1),
vsync: this,
);
_offsetAnimation =
Tween<Offset>(begin: Offset(0.0, -5.0), end: Offset.zero)
.animate(CurvedAnimation(
curve: Curves.linear,
parent: _controller,
));
super.initState();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: InkWell(
onTap: () {
setState(() {
condition = true;
});
_controller.forward();
},
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Container(
color: Colors.red,
width: 200,
height: 200,
),
if (condition)
SlideTransition(
position: _offsetAnimation,
child: Container(
color: Colors.green,
width: 100,
height: 100,
),
),
],
),
),
),
);
}
}
类测试扩展StatefulWidget{
@凌驾
_TestState createState();
}
类_TestState扩展状态
使用SingleTickerProviderStateMixin{
布尔条件;
动画控制器_控制器;
动画(非动画化),;
@凌驾
void initState(){
条件=假;
_控制器=动画控制器(
持续时间:常数持续时间(秒数:1),
vsync:这个,,
);
_抵消=
吐温(开始:偏移(0.0,-5.0),结束:偏移.0)
.动画(曲线动画)(
曲线:曲线。线性,
父节点:_控制器,
));
super.initState();
}
@凌驾
无效处置(){
_controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:墨水池(
onTap:(){
设置状态(){
条件=真;
});
_controller.forward();
},
儿童:中心(
子:列(
mainAxisSize:mainAxisSize.min,
儿童:[
容器(
颜色:颜色,红色,
宽度:200,
身高:200,
),
如果(条件)
幻灯片转换(
位置:_偏置,
子:容器(
颜色:颜色。绿色,
宽度:100,
身高:100,
),
),
],
),
),
),
);
}
}
这不是我想要的。如果条件为真,我将在构建函数中返回一个小部件,如果条件为真,我将在中设置另一个小部件的动画。所以,我有X小部件,在构建函数中我做“条件?返回X():返回Y();”。当条件发生变化时,我想在其中设置另一个小部件的动画,而不仅仅是更换它。