我尝试延迟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 --;
});
}
}