【发布时间】:2020-04-15 20:36:26
【问题描述】:
我在 Flutter 中创建了一个显示倒数计时器的屏幕。我能够播放、暂停和重新启动计时器,但我试图弄清楚当计时器达到 0 时如何执行操作(例如,重新启动自身)。
由于 dart 文件相当长,我只是在下面复制我认为是相关部分的内容。但如果需要,我可以添加更多。
首先我为倒数计时器创建一个小部件/类:
class Countdown extends AnimatedWidget {
Countdown({ Key key, this.animation }) : super(key: key, listenable: animation);
Animation<int> animation;
@override
build(BuildContext context){
return Text(
animation.value.toString(),
style: TextStyle(
fontSize: 120,
color: Colors.deepOrange
),
);
}
}
然后我有一个有状态的小部件,它创建控制器并导入一些数据(gameData.countdownClock 是倒数计时器的开始时间,它来自之前屏幕上的用户输入):
class _GameScreenState extends State<GameScreen> with TickerProviderStateMixin {
AnimationController _controller;
_GameScreenState(this.gameData);
GameData gameData;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: Duration(seconds: gameData.countdownClock),
);
}
然后是显示时钟的容器:
Container(
child: Countdown(
animation: StepTween(
begin: gameData.countdownClock,
end: 0,
).animate(_controller),
),
),
我必须在最后一个容器中添加一个侦听器吗?或者别的地方? (或者完全是别的东西!)
感谢任何帮助。谢谢
【问题讨论】:
标签: flutter dart flutter-layout flutter-animation