如何在运行程序时更改小部件动画

问题描述

我想在程序执行的时候把高度改成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 (将#修改为@)