import 'dart:async'
///需求
///0s转化为hh:mm:ss格式
///满足60s分钟加一,秒钟归0,以此类推
class TimerUtils {
static final TimerUtils _instance = TimerUtils._internal()
late Timer _timer
int _hours = 0
int _minutes = 0
int _seconds = 0
bool _isRunning = false
factory TimerUtils() {
return _instance
}
TimerUtils._internal()
String get currentTime => '${_formatTime(_hours)}:${_formatTime(_minutes)}:${_formatTime(_seconds)}'
bool get isRunning => _isRunning
void start() {
if (!_isRunning) {
_timer = Timer.periodic(const Duration(seconds: 1), (timer) {
_seconds++
if (_seconds == 60) {
_seconds = 0
_minutes++
if (_minutes == 60) {
_minutes = 0
_hours++
}
}
})
_isRunning = true
}
}
void stop() {
if (_isRunning) {
_timer.cancel()
_isRunning = false
// 在停止时调用重置方法
_hours = 0
_minutes = 0
_seconds = 0
}
}
String _formatTime(int time) {
return time < 10 ? '0$time' : '$time'
}
}