如何使 Timer.periodic 函数在调用 Flutter 后立即触发

Jac*_*ing 4 timer async-await dart flutter

我正在尝试在 flutter 中使用 Timer.periodic 函数,似乎当我调用它时,它会等待我在回调触发器之间的时间中输入的指定持续时间,然后再实际进入计时器并触发其中的代码。因此,如果我将持续时间设置为 2 分钟,它会等待 2 分钟,然后进入块并每 2 分钟触发一次回调。

如何使计时器立即启动并且计时器块中的代码在您激活它时立即开始执行?

Timer.periodic(durationBetweenPayoutIterations, (timer) async {
  // Code to be executed
}
Run Code Online (Sandbox Code Playgroud)

jam*_*lin 7

如果您的意思是您想要一个Timer立即触发初始回调的周期,您可以编写一个辅助函数:

Timer makePeriodicTimer(
  Duration duration,
  void Function(Timer timer) callback, {
  bool fireNow = false,
}) {
  var timer = Timer.periodic(duration, callback);
  if (fireNow) {
    callback(timer);
  }
  return timer;
}
Run Code Online (Sandbox Code Playgroud)

然后Timer.periodic您可以执行以下操作,而不是直接使用:

var timer = makePeriodicTimer(duration, callback, fireNow: true);
Run Code Online (Sandbox Code Playgroud)