sendData method Null safety

Future<QueryResult?> sendData(
  1. Statement statement,
  2. Function reloadEditScreen
)

Send a newly created Statement to the Database.

Implementation

Future<QueryResult?> sendData(
    Statement statement, Function reloadEditScreen) async {
  // The session token of the user.
  String? token = await safeStorage.read(key: "token");
  // If not logged in, return.
  if (token == null) {
    return null;
  }

  // Link to server.
  final HttpLink httpLink = HttpLink(statementDatabaseUrl, defaultHeaders: {
    'X-Parse-Application-Id': statementDatabaseApplicationID,
    'X-Parse-Client-Key': statementDatabaseClientKey,
    'X-Parse-Session-Token': token,
  });

  // Provides data from server and facilitates requests.
  GraphQLClient client = GraphQLClient(
    cache: GraphQLCache(),
    link: httpLink,
  );

  // The Result from the database mutation.
  var queryResult = await client.mutate(
    MutationOptions(
      document: gql(Queries.createStatement()),
      variables: {
        "input": statement.toMap(),
      },
    ),
  );
  // If the result has any exception.
  if (queryResult.hasException) {
    // Show some warning and return.
    reloadEditScreen(null, "Upload fehlgeschlagen.");
    return queryResult;
  }
  // Call the callback to reload the Editscreen.
  reloadEditScreen(
      Statement.fromMap(queryResult.data?["createStatement"]["statement"]),
      null);
  // And return the result.
  return queryResult;
}