sendEvent method
Sends an analytics event to Umami.
context is the current BuildContext.
title is the event title.
url is the event URL.
name is the event name.
referrer is the referrer URL (optional).
data is additional event data (optional).
type is the event type (default is 'event').
Returns true if the event was sent successfully.
Implementation
Future<bool> sendEvent({
required BuildContext context,
required String title,
required String url,
required String name,
String referrer = '',
Map<String, dynamic>? data,
String type = 'event',
}) async {
final userAgent = await getCustomUserAgent();
debugPrint('User-Agent: $userAgent');
// Get user's language
// ignore: use_build_context_synchronously
final language = Localizations.localeOf(context).toLanguageTag();
// Get screen resolution in logical pixels
// ignore: use_build_context_synchronously
final mediaQuery = MediaQuery.of(context);
final screen = "${mediaQuery.size.width.toInt()}x${mediaQuery.size.height.toInt()}";
debugPrint('User-Agent: $userAgent');
debugPrint("screen $screen");
final payload = {
"payload": {
"hostname": hostname,
"language": language,
"referrer": referrer,
"screen": screen,
"title": title,
"url": url,
"website": website,
"name": name,
if (data != null) "data": data,
},
"type": type,
};
final response = await http.post(
Uri.parse(endpoint + '/api/send'),
headers: {
'Content-Type': 'application/json',
'User-Agent': userAgent,
},
body: jsonEncode(payload),
);
return response.statusCode == 200;
}