trackStructuredEvent static method
Implementation
static Future<void> trackStructuredEvent({
required String category,
required String action,
String? label,
String? property,
double? value,
List<Map<String, dynamic>>? contexts,
}) async {
if (!await _isTrackingEnabled()) return;
final payload = await _createBasePayload('se');
payload['se_ca'] = category;
payload['se_ac'] = action;
if (label != null) payload['se_la'] = label;
if (property != null) payload['se_pr'] = property;
if (value != null) payload['se_va'] = value.toString();
if (!_validatePayload(payload)) {
return;
}
if (contexts != null && contexts.isNotEmpty) {
// print contexts in json string
_printLargeJson('CONTEXTS JSON', jsonEncode(contexts));
payload['cx'] = base64Encode(utf8.encode(jsonEncode({
'schema': 'iglu:com.snowplowanalytics.snowplow/contexts/jsonschema/1-0-0',
'data': contexts,
})));
}
// print payload in json string after cx property is added
_printLargeJson('PAYLOAD JSON', jsonEncode(payload));
await _sendEvent(payload, 'structured event');
}