resolveFieldValue<T> method
Reads one field off objectValue.
A Map is read by key, which takes precedence over the field's own
resolver. Otherwise the resolver runs, and failing that the
defaultFieldResolver given to the constructor, if any.
Implementation
Future<T?> resolveFieldValue<T>(
GraphQLObjectType objectType,
T objectValue,
String? fieldName,
Map<String, dynamic> argumentValues,
) async {
final field = objectType.fields.firstWhere((f) => f.name == fieldName);
final fieldResolve = field.resolve;
if (objectValue is Map) {
return objectValue[fieldName] as T;
} else if (fieldResolve == null) {
if (defaultFieldResolver != null) {
return await defaultFieldResolver!(
objectValue,
fieldName,
argumentValues,
);
}
return null;
} else {
return await fieldResolve(objectValue, argumentValues) as T?;
}
}