queryStatements static method
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;
});
}