flutter 定时器

Timer? _timer;
var periodicTime="".obs;
initTimer({required int createTime,required int duration}) async {

  _timer = Timer.periodic(const Duration(seconds: 1), (timer) async {

    DateTime currentTime = DateTime.now();
    var now = (currentTime.millisecondsSinceEpoch / 1000).truncate();
    int difference1 = (now - createTime).toInt();
    int difference2 = (duration - difference1).toInt();

    int hours = difference2 ~/ 3600; // 小时数
    int minutes = (difference2 % 3600) ~/ 60; // 分钟数
    int seconds = difference2.toInt() % 60; // 秒数
    if (difference1 >= duration) {
      if (!_timer!.isActive) {
        _timer?.cancel();
      }
      _timer?.cancel();
    }
    if(periodicTime.startsWith("-")){
      _timer?.cancel();
    }
    if(hours>24){
      periodicTime.value= '1天${(hours-24).toString().padLeft(
          2, '0')}小时${minutes.toString().padLeft(
          2, '0')}分${seconds.toString().padLeft(2, '0')}';
    }else{
      periodicTime.value= '${hours.toString().padLeft(2, '0')}:${minutes.toString().padLeft(
          2, '0')}:${seconds.toString().padLeft(2, '0')}';
    }
    }
  );

}

posted @ 2024-05-20 13:45  吾爱吃鱼  阅读(131)  评论(0)    收藏  举报