我正在尝试构建一个应用程序,它需要一个倒计时来向用户显示时间还有多少时间。但是循环不像我预料的那样起作用。
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颤振: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以此类推。如何使此代码正常工作?
发布于 2020-05-03 13:37:25
我想这是因为循环中的所有计时器都是同时创建的,所以每一秒都会打印相同的值。
也许您应该在某个时候使用异步挂起,比如await Future.delayed(Duration(seconds:1));。
https://stackoverflow.com/questions/61574545
复制相似问题