differenceWith<T> function

List<T> differenceWith<T>(
  1. Iterable<T>? list, [
  2. Iterable<T>? values,
  3. bool comparator(
    1. T,
    2. T
    )?
])

Implementation

List<T> differenceWith<T>(Iterable<T>? list, [Iterable<T>? values, bool Function(T, T)? comparator]) {
  if (list == null) {
    return [];
  }
  if (values == null || comparator == null) {
    return [...list];
  }
  Set<T> set = {};
  set.addAll(values);
  List<T> rl = [];
  for (var v in list) {
    bool diff = true;
    for (var t in set) {
      if (comparator.call(v, t)) {
        diff = false;
        break;
      }
    }
    if (diff) {
      rl.add(v);
    }
  }
  return rl;
}