unwrapNestedTypes method

List<AbstractType> unwrapNestedTypes(
  1. List<AbstractType> types
)

Implementation

List<AbstractType> unwrapNestedTypes(List<AbstractType> types) {
  final output = types
      .where((element) => element is! MapType || element is! ListType)
      .toList();

  final maps = types.whereType<MapType>();

  for (final element in maps) {
    output
      ..addAll(unwrapNestedTypes([element.key]))
      ..addAll(unwrapNestedTypes([element.value]));
  }

  final lists = types.whereType<ListType>();

  for (final element in lists) {
    output.addAll(unwrapNestedTypes([element.child]));
  }

  return output;
}