Flutter 颤振:计时器无法使用计时器结束上一个会话。取消()?

Flutter 颤振:计时器无法使用计时器结束上一个会话。取消()?,flutter,timer,Flutter,Timer,当我调用timer.cancel()时,时钟停止工作。但是,当回拨以启动新会话时,我发现旧会话中的_变量仍然从自身开始计数,并与新会话并行 请帮忙 startTime(60); 计时器。取消();#成功了。 定时器=空; 开始时间(60);#但当回忆起来。它与2个会话一起工作。(新旧) //调用timer.cancel()_变量在40停止。 //使用2个会话(40)和(60)调用startTime()变量计数 开始时间(重置){ int _=重置; const oneSec=const持续时间(

当我调用timer.cancel()时,时钟停止工作。但是,当回拨以启动新会话时,我发现旧会话中的_变量仍然从自身开始计数,并与新会话并行

请帮忙

startTime(60);
计时器。取消();#成功了。
定时器=空;
开始时间(60);#但当回忆起来。它与2个会话一起工作。(新旧)
//调用timer.cancel()_变量在40停止。
//使用2个会话(40)和(60)调用startTime()变量计数
开始时间(重置){
int _=重置;
const oneSec=const持续时间(秒:1);
定时器=定时器。周期性(
一秒,
(计时器)=>设置状态(
() {
如果(_<1){
timer.cancel();
//由我负责
}否则{
_u=_-1;

if(_如果计时器不为空,则取消计时器。下面的代码已测试

void startTime(reset) {
    int _u = reset;
    const oneSec = const Duration(seconds: 1);

    if (timer != null) {
      timer.cancel();
    }

    timer = Timer.periodic(oneSec, (Timer t) {
      if (_u < 1) {
        t.cancel();
        // call my handle
      } else {
        _u = _u - 1;
        print(_u);
        if (_u < 0) {
          t?.cancel();
        }
      }
    });
  }
void startTime(重置){
int _=重置;
const oneSec=const持续时间(秒:1);
如果(计时器!=null){
timer.cancel();
}
定时器=定时器周期(一秒,(定时器t){
如果(_<1){
t、 取消();
//由我负责
}否则{
_u=_-1;
印刷品;
如果(_<0){
t?.cancel();
}
}
});
}

这对我没用。就我而言,我想关闭上一个会话。(计时器取消,停止倒计时)。
void startTime(reset) {
    int _u = reset;
    const oneSec = const Duration(seconds: 1);

    if (timer != null) {
      timer.cancel();
    }

    timer = Timer.periodic(oneSec, (Timer t) {
      if (_u < 1) {
        t.cancel();
        // call my handle
      } else {
        _u = _u - 1;
        print(_u);
        if (_u < 0) {
          t?.cancel();
        }
      }
    });
  }