首页 > 解决方案 > Flutter 中动画值的问题

问题描述

我对数字过渡动画有疑问。

我希望动画始终从生成的最后一个数字继续,但它总是重复所做的第一个值转换

我已经找过有类似问题的人,但我没有找到

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> with SingleTickerProviderStateMixin {

  Animation numberTransitionAnimation;
  AnimationController animationController;

  @override
  void initState() {
    super.initState();

  animationController = AnimationController(duration: Duration(seconds: 1), vsync: this);
  numberTransitionAnimation = IntTween(begin: currentNumber, end: newNumber).animate(CurvedAnimation(parent: animationController, curve: Curves.linear));
  }

  int selectedNumber;
  int currentNumber = 0;
  int newNumber = 0;
  int total = 2000;


  void selectNumber(selectedNumber){
    
    newNumber = selectedNumber + currentNumber;
    
    currentNumber = newNumber;
    
    animationController.reset();
    animationController.forward();
  }

  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
        animation: animationController,
        builder: (BuildContext context, Widget child){
          return Scaffold(
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text(numberTransitionAnimation.value.toString() + " / $total"),
                  // \/ Test to see if the method is working
                  Text(currentNumber.toString()),
                  RaisedButton(onPressed: () => selectNumber(100), child: Text('100')),
                  RaisedButton(onPressed: ()=> selectNumber(200), child: Text('200')),
                  RaisedButton(onPressed: ()=> selectNumber(300), child: Text('300')),
                ],
              )
            ),
          );
        }
    );
  }
}

我要求您忽略代码的组织,我最终通过更改代码来寻找解决方案而变得混乱

如果有人可以帮助我,我将不胜感激

标签: flutterdartflutter-animation

解决方案


推荐阅读