getInitialList<V> method

List<E>? getInitialList<V>({
  1. List<E>? initialData,
  2. List<V>? initialValue,
  3. ValueMapper<E, V?>? valueMapper,
  4. ValueMapper<E, List<E>?>? childrenMapper,
})

Implementation

List<E>? getInitialList<V>({
  List<E>? initialData,
  List<V>? initialValue,
  ValueMapper<E, V?>? valueMapper,
  ValueMapper<E, List<E>?>? childrenMapper,
}) {
  if (initialData != null) {
    return initialData;
  }

  if (initialValue == null) {
    return null;
  }

  final List<E> result = [];
  for (E data in this) {
    if (initialValue
        .contains(valueMapper == null ? data : valueMapper(data))) {
      result.add(data);
    }

    if (childrenMapper != null) {
      final children = childrenMapper(data);
      if (children != null && children.isNotEmpty) {
        final childrenResult = children.getInitialList(
          initialData: initialData,
          initialValue: initialValue,
          valueMapper: valueMapper,
          childrenMapper: childrenMapper,
        );
        if (childrenResult != null) {
          result.addAll(childrenResult);
        }
      }
    }
  }
  return result;
}