findNearestValueIndex function

int findNearestValueIndex(
  1. double convertedPosition,
  2. List<double> list
)

TODO any way to optimize it?!?

Implementation

int findNearestValueIndex(double convertedPosition, List<double> list) {
  if (list.length == 1) return 0;

  List<double> differences = list
      .map<double>((double value) => (value - convertedPosition).abs())
      .toList();
  double minDifference = differences.reduce(
    (previousValue, value) => value < previousValue ? value : previousValue,
  );

  int minDifferenceFirstIndex = differences.indexOf(minDifference);
  int minDifferenceLastIndex = differences.lastIndexOf(minDifference);

  bool hasCollision = minDifferenceLastIndex != minDifferenceFirstIndex;

  if (hasCollision && (convertedPosition > list[minDifferenceFirstIndex])) {
    return minDifferenceLastIndex;
  }
  return minDifferenceFirstIndex;
}