constStepperRound<T extends num> function

T constStepperRound<T extends num>(
  1. T value, {
  2. required T maxValue,
  3. required T minValue,
  4. required T stepValue,
})

Implementation

T constStepperRound<T extends num>(T value,
    {required T maxValue, required T minValue, required T stepValue}) {
  final leftover = value % stepValue;
  if ((maxValue - value) < stepValue / 2) {
    return maxValue;
  }

  final extraValue =
      leftover > stepValue / 2 ? (stepValue - leftover) : -leftover;
  return max(minValue, min(maxValue, (value + extraValue) as T));
}