在其他 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
我有 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