getArgFromList<T> static method

T? getArgFromList<T>(
  1. Iterable? iterable, {
  2. bool predicate(
    1. dynamic
    )?,
  3. T? defaultValue,
})

Tries to return object of given Type or predicate. If none found, then defaultValue is returned.

Implementation

static T? getArgFromList<T>(Iterable? iterable,
    {bool Function(dynamic)? predicate, T? defaultValue}) {
  if (iterable == null) {
    return defaultValue;
  }

  if (predicate != null) {
    final testItem =
        iterable.nullable().firstWhere(predicate, orElse: () => null);

    if (testItem != null) {
      return testItem;
    }
  } else {
    if (T != dynamic) {
      final typeItem = iterable
          .nullable()
          .firstWhere((item) => item is T, orElse: () => null);

      if (typeItem != null) {
        return typeItem;
      }
    }
  }

  return defaultValue;
}