queryStatements static method

Future<Response?> queryStatements(
  1. Map<String, dynamic> queryParameters
)

Queries the LRS for statements based on the provided queryParameters.

The queryParameters map follows standard xAPI filtering. Common keys include:

  • verb: Filter by a specific action IRI.
  • agent: Filter by user (must be a JSON string, e.g., jsonEncode({'mbox': 'mailto:test@test.com'})).
  • activity: Filter by a specific activity ID.
  • limit: Number of results to return (int). BEAR IN MIND that there may be a lot more you can query, you'll need to check xAPI standards for this.

Example:

await xAPIConnector.queryStatements({
  'verb': 'http://adlnet.gov/expapi/verbs/completed',
  'limit': 5,
});

Implementation

static Future<http.Response?> queryStatements(
  Map<String, dynamic> queryParameters,
) async {
  if (!_lrs.ensureInitialised()) {
    AppLogger.log("LRS NOT INITALISED!");
    return null;
  }
  AppLogger.log("Querying statement...");
  return _lrs
      .queryStatements(queryParameters)
      .then((response) {
        if (response != null) {
          AppLogger.log(
            "Query statements ended. Status: ${response.statusCode}",
          );
          AppLogger.log("Response body: ${response.body}");
        } else {
          AppLogger.log("No response returned from LRS.");
        }
        return response;
      })
      .catchError((e) {
        AppLogger.log("Error querying statements: $e");
        return null;
      });
}