track method
Track an event. @param name The name of the event. @param params The optional parameters.
Implementation
@override
Future track(String name, [Map<String, dynamic>? params])
async
{
if (name.isEmpty)
return;
// Check limits (https://support.google.com/firebase/answer/9237506?hl=en)
if (name.length > GoogleAnalyticsService.MAX_EVENT_NAME_LENGTH)
name = name.substring(0, GoogleAnalyticsService.MAX_EVENT_NAME_LENGTH);
Map<String, dynamic>? safeParams;
if (params != null)
{
safeParams = {};
for (String key in params.keys)
{
Object? value = params[key];
if (value == null)
continue;
if (key.length > GoogleAnalyticsService.MAX_PARAM_NAME_LENGTH)
key = key.substring(0, GoogleAnalyticsService.MAX_PARAM_NAME_LENGTH);
if (value is String)
{
String valueString = value;
if (valueString.length > GoogleAnalyticsService.MAX_PARAM_VALUE_LENGTH)
valueString = valueString.substring(0, GoogleAnalyticsService.MAX_PARAM_VALUE_LENGTH);
safeParams[key] = valueString;
}
else
safeParams[key] = value;
}
}
String s = (_isEnabled ? 'GoogleAnalytics' : 'Disabled-GoogleAnalytics') + ': ' + name;
if (safeParams != null)
for (String key in safeParams.keys)
s += ' $key=${safeParams[key]}';
logger.logInfo(s);
if (_isEnabled)
_firebaseAnalytics.logEvent(name: name, parameters: safeParams);
}