fromElement static method

ClientLifecycleComponentMethod? fromElement(
  1. MethodElement object
)

Implementation

static ClientLifecycleComponentMethod? fromElement(MethodElement object) {
  final returnTypeAlias = object.returnType.alias?.element.name;

  String returnType;
  if (returnTypeAlias != null && aliasReturnTypes.contains(returnTypeAlias)) {
    returnType = returnTypeAlias;
  } else if (object.returnType case final InterfaceType type
      when type.isAnyFuture) {
    final typeArg = type.typeArguments.first;

    final resolveReturnType = typeArg.getDisplayString();

    returnType = switch (typeArg) {
      InterfaceType() => typeArg.alias?.element.name ?? resolveReturnType,
      _ => resolveReturnType,
    };

    if (returnType.startsWith((ExceptionCatcherResult).name)) {
      return null;
    }
  } else {
    returnType = object.returnType.getDisplayString();

    if (returnType.startsWith((ExceptionCatcherResult).name)) {
      return null;
    }
  }

  if (!returnTypes.contains(returnType)) {
    return null;
  }

  final params = object.formalParameters
      .map(ClientParam.fromElement)
      .whereType<ClientParam>()
      .toList();

  return ClientLifecycleComponentMethod(
    parameters: params,
    returnType: returnType,
  );
}