File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9,15 +9,34 @@ import 'package:watermeter/repository/logger.dart';
99class GlobalTimerController {
1010 static final GlobalTimerController i = GlobalTimerController ._();
1111 GlobalTimerController ._() {
12- _timer = Timer . periodic ( const Duration (minutes : 1 ), (_) {
13- currentTimeSignal.value = DateTime . now ();
14- log. debug ( "Global Timer: Time is ${currentTimeSignal .value }" );
15- } );
12+ _scheduleNext ();
13+ log. info (
14+ "Global Timer: Time is ${currentTimeSignal .value }, timer initialized" ,
15+ );
1616 }
1717
1818 final currentTimeSignal = signal (DateTime .now ());
19+ late Timer _timer;
1920
20- late final Timer _timer;
21+ /// 每次触发后重新计算到下一个整分的间隔,确保始终对齐整分。
22+ void _scheduleNext () {
23+ final now = DateTime .now ();
24+ final nextMinute = DateTime (
25+ now.year,
26+ now.month,
27+ now.day,
28+ now.hour,
29+ now.minute + 1 ,
30+ );
31+ _timer = Timer (
32+ nextMinute.difference (now) + const Duration (milliseconds: 100 ),
33+ () {
34+ currentTimeSignal.value = DateTime .now ();
35+ log.debug ("Global Timer: Time is ${currentTimeSignal .value }" );
36+ _scheduleNext ();
37+ },
38+ );
39+ }
2140
2241 void dispose () => _timer.cancel ();
2342}
You can’t perform that action at this time.
0 commit comments