Rahul Choudhary
Rahul Choudhary

Reputation: 309

Behaviour of Future.delayed() in dart

I generally program in C++ and aware how the Sleep function work, but learning dart (for flutter) now i came across this delay function

void countSeconds(s) {
  for( var i = 1 ; i <= s; i++ ) {
      Future.delayed(Duration(seconds: i), () => print(i));
   }
}

It prints value of i after ith second, but shouldn't it print 1 after 1 sec, 2 after another 2 sec ( ie 3 ), 3 after another 3 secs (ie 6 sec) etc. How is it working?

Upvotes: 5

Views: 3655

Answers (1)

Adelina
Adelina

Reputation: 11881

This will print 1 after 1s, 2 after another 2s, 3 after 6s.

 for( var i = 1 ; i <= 5; i++ ) {
      await Future.delayed(Duration(seconds: i), () => print(i));
   }

In asynchronous programming you need to await for futures to return result. Otherwise it will return everything immediately

Upvotes: 7

Related Questions