filterPoolElements method

FutureOr<List<C>> filterPoolElements(
  1. FutureOr<bool> filter(
    1. C o
    )
)
inherited

Implementation

FutureOr<List<O>> filterPoolElements(FutureOr<bool> Function(O o) filter) {
  var hasFuture = false;

  var elements = _pool.map<FutureOr<O?>>((o) {
    var valid = filter(o);

    if (valid is Future<bool>) {
      hasFuture = true;
      return valid.then((valid) => valid ? o : null);
    }

    return valid ? o : null;
  }).toList();

  if (hasFuture) {
    return elements.resolveAllNotNull();
  } else {
    return elements.whereType<O>().toList();
  }
}