|
|
@@ -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
|