StopWatchTimer constructor

StopWatchTimer({
  1. bool isLapHours = true,
  2. StopWatchMode mode = StopWatchMode.countUp,
  3. int presetMillisecond = 0,
  4. int refreshTime = 1,
  5. void onChange(
    1. int
    )?,
  6. void onChangeRawSecond(
    1. int
    )?,
  7. void onChangeRawMinute(
    1. int
    )?,
  8. void onStopped()?,
  9. void onEnded()?,
})

Implementation

StopWatchTimer({
  this.isLapHours = true,
  this.mode = StopWatchMode.countUp,
  int presetMillisecond = 0,
  this.refreshTime = 1,
  this.onChange,
  this.onChangeRawSecond,
  this.onChangeRawMinute,
  this.onStopped,
  this.onEnded,
}) {
  /// Set presetTime
  _presetTime = presetMillisecond;
  _initialPresetTime = presetMillisecond;

  if (mode == StopWatchMode.countDown) {
    final value = presetMillisecond;
    _rawTimeController = BehaviorSubject<int>.seeded(value);
    _secondTimeController = BehaviorSubject<int>.seeded(getRawSecond(value));
    _minuteTimeController = BehaviorSubject<int>.seeded(getRawMinute(value));
  } else {
    _rawTimeController = BehaviorSubject<int>.seeded(0);
    _secondTimeController = BehaviorSubject<int>.seeded(0);
    _minuteTimeController = BehaviorSubject<int>.seeded(0);
  }

  _elapsedTime.listen((value) {
    _rawTimeController.add(value);
    onChange?.call(value);
    final latestSecond = getRawSecond(value);
    if (_second != latestSecond) {
      _secondTimeController.add(latestSecond);
      _second = latestSecond;
      onChangeRawSecond?.call(latestSecond);
    }
    final latestMinute = getRawMinute(value);
    if (_minute != latestMinute) {
      _minuteTimeController.add(latestMinute);
      _minute = latestMinute;
      onChangeRawMinute?.call(latestMinute);
    }
  });
}