forMethodParameter static method
Creates a ResolvableType for a method parameter.
This factory method creates a ResolvableType representing the type of a specific parameter in a method declaration. This is useful for reflection-based operations and method analysis.
Parameters:
method
: The MethodDeclaration containing the parameterparameterIndex
: The zero-based index of the parameter
Returns:
- ResolvableType representing the parameter's type
- ResolvableType.NONE if the parameter index is invalid
Example:
class UserService {
User createUser(String name, int age, List<String> emails);
void updateUser(User user, Map<String, dynamic> updates);
}
final createUserMethod = getMethodDeclaration(UserService, 'createUser');
final updateUserMethod = getMethodDeclaration(UserService, 'updateUser');
final nameParamType = ResolvableType.forMethodParameter(createUserMethod, 0);
final ageParamType = ResolvableType.forMethodParameter(createUserMethod, 1);
final emailsParamType = ResolvableType.forMethodParameter(createUserMethod, 2);
print(nameParamType.resolve()?.getType()); // String
print(ageParamType.resolve()?.getType()); // int
print(emailsParamType.resolve()?.getType()); // List<String>
print(emailsParamType.hasGenerics()); // true
print(emailsParamType.getGeneric().resolve()?.getType()); // String
final userParamType = ResolvableType.forMethodParameter(updateUserMethod, 0);
final updatesParamType = ResolvableType.forMethodParameter(updateUserMethod, 1);
print(userParamType.resolve()?.getType()); // User
print(updatesParamType.resolve()?.getType()); // Map<String, dynamic>
Implementation
static ResolvableType forMethodParameter(MethodDeclaration method, int parameterIndex) {
final params = method.getParameters();
if (parameterIndex >= 0 && parameterIndex < params.length) {
final param = params[parameterIndex];
final typeProvider = _ParameterTypeProvider(param);
return forTypeWithProviderAndResolver(param.getType(), typeProvider, null);
}
return NONE;
}