Timer? _timer; //倒计时的计时器
int _count = 60; //初始倒计时时间
 //剩余秒数
  late int _remainingSeconds;
  //切到后台时的当前时间
  DateTime? _backgroundTime;


  void didChangeAppLifecycleState(AppLifecycleState state) {
    // 切到后台倒计时会被暂停
    super.didChangeAppLifecycleState(state);
    if (state == AppLifecycleState.paused) {
      _backgroundTime = DateTime.now();
    } else if (state == AppLifecycleState.resumed && _backgroundTime != null) {
      //切回前台计算时间差,用剩余秒数减去
      final diff = DateTime.now().difference(_backgroundTime!).inSeconds;
      setState(() => _remainingSeconds = max(0, _remainingSeconds - diff));
    }
  }

//倒计时活动
_timerAction(){
_timer = new Timer.periodic(Duration(seconds: 1), (Timer timer) {
                if (mounted) {
                  final calculated = _count - timer.tick;
                  setState(() => _remainingSeconds = calculated > 0 ? calculated : 0);
                  if (_remainingSeconds <= 0) {
                    timer.cancel();
                    _buttonText = S.current.fasongyanzhengma; //重置按钮文本
                  }else{
                    _buttonText = '${_remainingSeconds}S'; //更新文本内容
                  }
                }
              });
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐