timerOnceBetween static method

void timerOnceBetween(
  1. Function callback,
  2. int after,
  3. int before
)

do nothing if the callback is already in the list and will get called after M to N ms

Implementation

static void timerOnceBetween(Function callback, int after, int before) {
  var desiredTime50_0 =
      (((DateTime.now()).millisecondsSinceEpoch + after) / 50).ceil();
  var desiredTime50_1 =
      (((DateTime.now()).millisecondsSinceEpoch + before) / 50).ceil();
  if (_functionsMap.containsKey(callback)) {
    var existTf = _functionsMap[callback]!;
    if (existTf.ts50 >= desiredTime50_0 && existTf.ts50 <= desiredTime50_1) {
      return;
    } else {
      existTf.remove(callback);
    }
  }
  if (desiredTime50_1 <= _lastTimeRun) {
    callLater(callback);
    return;
  }
  var tf = _getTimerFunctions(desiredTime50_1);
  tf.add(callback);
  _functionsMap[callback] = tf;
}