execute<TData, TVariables> method

Future<TypedGraphQLResponse<TData>> execute<TData, TVariables>(
  1. GraphQLOperation<TData, TVariables> operation,
  2. TVariables variables, {
  3. Map<String, dynamic>? extensions,
  4. CancelToken? cancelToken,
})

Executes a generated operation with typed variables and response data.

Implementation

Future<TypedGraphQLResponse<TData>> execute<TData, TVariables>(
  GraphQLOperation<TData, TVariables> operation,
  TVariables variables, {
  Map<String, dynamic>? extensions,
  CancelToken? cancelToken,
}) async {
  final encodedVariables = operation.encodeVariables(variables);
  final response = await transport.request(
    operation.document,
    variables: encodedVariables.isEmpty ? null : encodedVariables,
    operationName: operation.operationName,
    extensions: extensions,
    cancelToken: cancelToken,
  );

  TData? data;
  if (response.data != null) {
    try {
      data = operation.decodeData(response.data!);
    } on Object catch (error) {
      throw GraphQLResponseDecodingException(operation.operationName, error);
    }
  }
  return TypedGraphQLResponse(
    data: data,
    errors: response.errors,
    extensions: response.extensions,
  );
}