如何在颤动中停止动画持续时间?

如何解决如何在颤动中停止动画持续时间?

我这里有一个关于递减计时器的代码。我想在 5 秒后或在某个时间停止计时器。如何使用颤振实现这一目标?这是一个示例代码

class MyHomePage1 extends StatefulWidget {
      MyHomePage1({Key key,this.title}) : super(key: key);
    
       final String title;
     
       @override
       _MyHomePage1State createState() => _MyHomePage1State();
     }
     
     class _MyHomePage1State extends State<MyHomePage1> with TickerProviderStateMixin {
       int _counter = 0;
       AnimationController _controller;
       int levelClock = 180;
     
       void _incrementCounter() {
         setState(() {
           _counter++;
         });
       }
     
       @override
       void dispose() {
         _controller.dispose();
         super.dispose();
       }
     
       @override
       void initState() {
         super.initState();
     
         _controller = AnimationController(vsync: this,duration: Duration(seconds: levelClock) // gameData.levelClock is a user entered number elsewhere in the applciation
             );
     
         _controller.forward();
       }
     
       @override
       Widget build(BuildContext context) {
         return Scaffold(
           appBar: AppBar(
             title: Text(widget.title),),body: Center(
             child: Column(
               mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
                 Countdown(
                   animation: StepTween(
                     begin: levelClock,// THIS IS A USER ENTERED NUMBER
                     end: 0,).animate(_controller),Text(
                   'You have pushed the button this many times:',Text(
                   '$_counter',style: Theme.of(context).textTheme.headline4,],floatingActionButton: FloatingActionButton(
             onpressed: _incrementCounter,tooltip: 'Increment',child: Icon(Icons.add),);
       }
     }
     
     class Countdown extends AnimatedWidget {
       Countdown({Key key,this.animation}) : super(key: key,listenable: animation);
       final Animation<int> animation;
     
       @override
       build(BuildContext context) {
         Duration clockTimer = Duration(seconds: animation.value);
     
         String timerText = '${clockTimer.inMinutes.remainder(60).toString()}:${clockTimer.inSeconds.remainder(60).toString().padLeft(2,'0')}';
     
         return Column(
           children: [
             Text(
               "$timerText",style: TextStyle(
                 fontSize: 110,color: Theme.of(context).primaryColor,);
       }
     }

解决方法

实现此目的的一种方法是向动画添加侦听器,就像这样。

Countdown(
  animation: StepTween(
    begin: levelClock,end: 0,).animate(_controller)
    ..addListener(() {
      if (_controller.value > (4 / levelClock)) {    //4 = to stop after 5 seconds
        _controller.stop();
      }
    }),),

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?