问题描述
我想在程序执行的时候把高度改成50,Container的高度达到150(有height2) .该程序运行良好,但我不知道如何在运行时更改容器高度
class MyAppState extends State<MyApp> with SingleTickerProviderStateMixin{
AnimationController _controller;
void initState(){
super.initState();
_controller = AnimationController(vsync: this,duration: Duration(seconds: 2));
}
_playAnimation() async{
try{
await _controller.;
await _controller.reverse();
}on TickerCanceled{
}
}
@override
Widget build(BuildContext context) {
timedilation=10;
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('StaggerAnimate'),),body: GestureDetector(
onTap: (){
_playAnimation();
},child: Center(
child: Container(
width: 300,height: 300,decoration: Boxdecoration(
color: Colors.black.withOpacity(0.1),border: Border.all(
color: Colors.black.withOpacity(0.5)
)
),child: StaggerAnimation(
controller:_controller.view
),);
}
}
这里我定义了交错函数,这里我定义了不同的补间
class StaggerAnimation extends StatelessWidget{
StaggerAnimation({Key key,this.controller}):
opacity = Tween(begin: 0.0,end: 1.0).animate(CurvedAnimation(parent: controller,curve: Interval(0.0,0.1,curve: Curves.ease))),width = Tween(begin: 0.0,end: 50.0).animate(CurvedAnimation(parent: controller,curve: Interval(0.125,0.250,height = Tween(begin: 5.0,end: 150.0).animate(CurvedAnimation(parent: controller,curve: Interval(0.250,0.375,padding = EdgeInsetsTween(begin: EdgeInsets.only(bottom: 16),end: EdgeInsets.only(bottom: 116)).animate(CurvedAnimation(parent: controller,curve: Interval(0.375,0.500,height2 = Tween(begin: 150.0,borderRadius = BorderRadiusTween(begin: BorderRadius.circular(4),end: BorderRadius.circular(75)).animate(CurvedAnimation(parent: controller,curve: Interval(0.500,0.750,curve: Curves.ease)));
final Animation<double> controller;
final Animation<double> opacity;
final Animation<double> width;
final Animation<double> height;
final Animation<EdgeInsets> padding ;
final Animation<double> height2;
final Animation<BorderRadius> borderRadius;
Widget _buildPrimaryAnimation (BuildContext context,Widget child){
return Container(
alignment: Alignment.bottomCenter,padding: padding.value,child: Opacity(
opacity: opacity.value,child:Container(
width: width.value,
这里我想在到达所需时间时用高度 2 替换高度
height: height.value,decoration: Boxdecoration(
color: Colors.indigo[200],border: Border.all(
color: Colors.indigo[400],width: 4.0
),borderRadius: borderRadius.value
),);
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
animation: controller,builder: _buildPrimaryAnimation
);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)