finish method

Future<void> finish()

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(() {});
}