Просмотр исходного кода

[fix]修复验证码按钮报错

Destiny 1 год назад
Родитель
Сommit
97ad0963c9
1 измененных файлов с 7 добавлено и 5 удалено
  1. 7 5
      lib/widget/login_code_btn.dart

+ 7 - 5
lib/widget/login_code_btn.dart

@@ -37,10 +37,10 @@ class LoginCodeBtn extends StatefulWidget {
 
 class _LoginCodeBtnState extends State<LoginCodeBtn> {
   /// 倒计时的计时器。
-  late Timer timer;
+  Timer? _timer;
 
   /// 当前倒计时的秒数。
-  late int _seconds;
+  int? _seconds;
 
   /// 当前墨水瓶(`InkWell`)的字体样式。
   TextStyle inkWellStyle = _availableStyle;
@@ -63,7 +63,7 @@ class _LoginCodeBtnState extends State<LoginCodeBtn> {
   /// 启动倒计时的计时器。
   void _startTimer() {
     // 计时器(`Timer`)组件的定期(`periodic`)构造函数,创建一个新的重复计时器。
-    timer = Timer.periodic(const Duration(seconds: 1), (timer) {
+    _timer = Timer.periodic(const Duration(seconds: 1), (timer) {
       if (_seconds == 0) {
         _cancelTimer();
         _seconds = widget.countdown;
@@ -71,7 +71,9 @@ class _LoginCodeBtnState extends State<LoginCodeBtn> {
         setState(() {});
         return;
       }
-      _seconds--;
+      if (_seconds != null) {
+        _seconds = _seconds! - 1;
+      }
       _verifyStr = '$_seconds' 's后重新获取';
       setState(() {});
       if (_seconds == 0) {
@@ -83,7 +85,7 @@ class _LoginCodeBtnState extends State<LoginCodeBtn> {
   /// 取消倒计时的计时器。
   void _cancelTimer() {
     // 计时器(`Timer`)组件的取消(`cancel`)方法,取消计时器。
-    timer.cancel();
+    _timer?.cancel();
   }
 
   @override