start method

void start({
  1. required String id,
  2. required Duration interval,
  3. required VoidCallback onTick,
  4. bool restartIfExists = true,
})

启动一个新的轮询任务

参数:

  • id 任务唯一ID,字符串
  • interval 间隔时间,Duration
  • onTick 到达轮询时刻时执行的回调,VoidCallback
  • restartIfExists 如果ID已存在,是否重启任务(默认true,否则忽略新任务)

返回结果

无返回值。

用法示例

// 启动一个5秒轮询任务
PollingTask().start(
  id: 'taskA',
  interval: Duration(seconds: 5),
  onTick: () {
    print('A polling tick');
  },
);

// 启动一个10秒轮询任务,且若已存在则不重启
PollingTask().start(
  id: 'taskB',
  interval: Duration(seconds: 10),
  onTick: () => print('B tick!'),
  restartIfExists: false,
);

Implementation

void start({
  required String id,
  required Duration interval,
  required VoidCallback onTick,
  bool restartIfExists = true,
}) {
  if (_tasks.containsKey(id)) {
    if (!restartIfExists) return;
    stop(id);
  }
  _tasks[id] = Timer.periodic(interval, (_) {
    onTick();
  });
}