减慢for循环,在10秒内从15计数到5



我尝试延迟for循环的输出,并每秒打印一次值的计数。这就是我想做的,但不知为什么它不工作。

void main() {

var actualCurrent = 5; //Value from DB later
var delayedCurrent = 15; // Value gets set in programm

for (int i=delayedCurrent; i > actualCurrent; i--) {
Future.delayed(Duration(seconds: 1),(){

print('value: '+delayedCurrent.toString());
delayedCurrent --;
});

}
}

如果我把i--放进Future.delayed,程序就会崩溃。

如何在10秒内从15数到5 ?

我们在Future上运行main,这就是为什么我们需要将此函数async设置为await

在dartpad

void main() async {
var actualCurrent = 5; //Value from DB later
var delayedCurrent = 15; // Value gets set in programm
for (int i = delayedCurrent; i > actualCurrent; i--) {
await Future.delayed(Duration(seconds: 1), () {
print('value: ' + delayedCurrent.toString());
delayedCurrent--;
});
}
}

只需添加async并等待延迟的方法。

void main() async{

var actualCurrent = 5; //Value from DB later
var delayedCurrent = 15; // Value gets set in programm

for (int i=delayedCurrent; i > actualCurrent; i--) {
await Future.delayed(Duration(seconds: 1),(){

print('value: '+delayedCurrent.toString());
delayedCurrent --;
});

}
}

最新更新