• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

Flutter倒计时实现

Flutter cps12345 11个月前 (09-03) 401次浏览 0个评论

引入 Timer 库

import 'dart:async';

定义计时变量

class _LoginPageState extends State{
  ...
  Timer _timer;
  int _countdownTime = 0;
  ...
}

点击后开始倒计时

这里我们点击发送验证码文字来举例说明。

GestureDetector(
  onTap: () {
    if (_countdownTime == 0 && validateMobile()) {
      //Http请求发送验证码
      ...
      setState(() {
        _countdownTime = 60;
      });
      //开始倒计时
      startCountdownTimer();
    }
  },
  child: Text(
    _countdownTime > 0 ? '$_countdownTime后重新获取' : '获取验证码',
    style: TextStyle(
      fontSize: 14,
      color: _countdownTime > 0
          ? Color.fromARGB(255, 183, 184, 195)
          : Color.fromARGB(255, 17, 132, 255),
    ),
  ),
)

实现方法

void startCountdownTimer() {
  const oneSec = const Duration(seconds: 1);

  var callback = (timer) => {
    setState(() {
      if (_countdownTime < 1) {
        _timer.cancel();
      } else {
        _countdownTime = _countdownTime - 1;
      }
    })
  };

  _timer = Timer.periodic(oneSec, callback);
}

dispose()取消定时器

@override
void dispose() {
  super.dispose();
  if (_timer != null) {
    _timer.cancel();
  }
}
喜欢 (3)

您必须 登录 才能发表评论!