finish method
awaits delay finish.
If code runs fast, then finish is awaited for rest of duration
.
If code runs too slowly, then finish is triggered immediately.
Implementation
Future<void> finish() {
final currentDelay = DateTime.now().difference(_start).inMilliseconds;
final delay = _millis - currentDelay;
if (delay > 0) {
return Future.delayed(Duration(milliseconds: delay));
}
return Future(() {});
}