在其他 dateTime/NTPTime Flutter 上定期停止定时器

Stop Timer periodic on other dateTime/NTPTime Flutter

我有 2 个调用 NTP 的函数来获取本地日期时间。第一个像使用 Timer.periodic 的时钟一样工作,第二个用于获取用户点击按钮时的时间。但是当我在第二个函数中显示时间时,它仍在运行 Timer.periodic。如何避免这种情况?谢谢

我的代码:

Future<String> getNTPTime() async {
DateTime startDate = await NTP.now();
String currentDate = DateFormat('d MMMM yyyy').format(startDate);
String currentTime = DateFormat('kk : mm : ss').format(startDate);
print('NTP DateTime: $startDate');

if (mounted) {
  setState(() {
    _currentDate = currentDate;
    _currentTime = currentTime;
  });
}}

Future<String> getNTPTimeIn() async {
DateTime ntpTimeIn = await NTP.now();

String timeIn = DateFormat('kk : mm : ss').format(ntpTimeIn);
print('NTP DateTime: $ntpTimeIn');


if (mounted) {
  setState(() {
    _ntpTimeIn = timeIn;
  });
}}

并在initState中调用

@override
super.initState();
getNTPTime();
Timer.periodic(Duration(seconds: 1), (timer) => getNTPTime());
}

当我显示 _ntpTimeIn 时,Timer.periodic 仍然是 运行。

这就是您应该如何实施它。

class YourClas extends StatefulWidget{
Timer _timer;

@override
void initState(){
super.initState();
getNTPTime();
_timer = Timer.periodic(Duration(seconds: 1), (timer) => getNTPTime());
}

@override
void dispose(){
if(_timer.isActive) _timer.cancel();
super.dispose();
}
}

然后当用户点击按钮调用 _timer.cancel(); 停止 Timer