我正在尝试构建一个需要倒数计时以向用户显示剩余时间的应用程序。但是循环没有按我预期的那样工作。
for(int i=0;i<widget.sets;i++)
{
while(j<5){
CountdownTimer(Duration(seconds: 2), Duration(seconds: 1)).listen((data){
})..onData((data){
print(data.elapsed.inSeconds.toString());
})..onDone((){
print('onDone.........');
});
print('Hello');
j++;
}
j=0;
print((i+1).toString());
}
我得到了这个输出
颤振:你好扑:你好扑:你好扑:你好扑:你好扑:你好扑:你好扑:你好扑:你好扑:你好颤动:1颤动:1颤动:1颤动:1颤动:1颤动:1颤动:1颤动:1颤动:1颤动:1颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2扑:onDone .........颤动:2颤抖:onDone .........
我期望的输出是
flutter: 1
flutter: 4
flutter: 3
flutter: 4
flutter: 5
flutter: onDone.........
flutter: Hello
flutter: 1
flutter: 4
flutter: 3
flutter: 4
flutter: 5
flutter: onDone.........
flutter: Hello
依此类推。如何使此代码正常工作?
我想是因为您的循环中的所有计时器都是同时创建的,所以每秒钟它们都打印相同的值。
也许您应该在某个时候使用异步悬挂,例如await Future.delayed(Duration(seconds:1));