My stopwatch is running 0.5x slower than actual time (e.g. while the real time is 1 minute, the stopwatch shows ~34 seconds).
Here is the Provider code:
class TimerState extends ChangeNotifier {
late String _stringTimer;
late Duration _duration;
Timer? _timer;
TimerState() {
_stringTimer = '00:00.00';
_duration = const Duration();
}
String get get => _stringTimer;
void start() {
_timer = Timer.periodic(const Duration(milliseconds: 1), (_) => _addTime());
}
void _addTime() {
_duration = Duration(milliseconds: _duration.inMilliseconds + 1);
_formattedTimer();
}
void _formattedTimer() {
String twoDigits(int n) => n.toString().padLeft(2, '0');
final milliseconds = twoDigits((_duration.inMilliseconds.remainder(1000) / 10).floor());
final seconds = twoDigits(_duration.inSeconds.remainder(60));
final minutes = twoDigits(_duration.inMinutes.remainder(60));
_stringTimer = '$minutes:$seconds.$milliseconds';
notifyListeners();
}
}