我正在使用 timer.periodic 在不同的時間呼叫一些函式。我面臨的問題是計時器比現實生活慢得多,例如您將在我的代碼中看到計時器應該在 5 秒內完成,但在現實生活中它需要 25 秒才能完成。
void startTheTimer(){
var counter = 5;
final zeroDurationTimer = Timer.run(() {
_StartDataCollection();
});
Timer.periodic(const Duration(seconds: 5), (timer) {
print(timer.tick);
counter--;
if (counter == 2) {
_StopDataCollection();
}else if (counter == 1){
createUser();
}
if (counter == 0) {
print('Cancel timer');
timer.cancel();
print(numbers.length);
print(fifo.length);
}
});
}
編譯器上的列印顯示計時器滴答聲為 1-2-3-4-5,但列印 2 花費的時間太長,其余的滴答聲也一樣。有誰知道發生了什么?
uj5u.com熱心網友回復:
Timer.periodic(const Duration(seconds: 5), (timer) { //do function }意思是,它花了5s來完成這個功能
因此,如果您執行此功能5 次,它將花費25s
更改為1s將起作用:
Timer.periodic(const Duration(seconds: 1), (timer) {
print(timer.tick);
counter--;
if (counter == 2) {
_StopDataCollection();
}else if (counter == 1){
createUser();
}
if (counter == 0) {
print('Cancel timer');
timer.cancel();
print(numbers.length);
print(fifo.length);
}
});
或使用for-loop代替計時器
for(int i = 0; i < 5; i ){
await Future.delayed(Duration(seconds: 1));
counter--;
print(counter);
if (counter == 2) {
_StopDataCollection();
}else if (counter == 1){
createUser();
}
if (counter == 0) {
print('Cancel timer');
print(numbers.length);
print(fifo.length);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/490334.html
