55 lines
1.3 KiB
Dart
55 lines
1.3 KiB
Dart
import 'package:firebase_analytics/firebase_analytics.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
/// Service wrapper for Google Analytics
|
|
class AnalyticsService {
|
|
final FirebaseAnalytics _analytics = FirebaseAnalytics.instance;
|
|
|
|
FirebaseAnalyticsObserver getAnalyticsObserver() =>
|
|
FirebaseAnalyticsObserver(analytics: _analytics);
|
|
|
|
Future<void> logEvent({
|
|
required String name,
|
|
Map<String, Object>? parameters,
|
|
}) async {
|
|
try {
|
|
await _analytics.logEvent(name: name, parameters: parameters);
|
|
} catch (e) {
|
|
debugPrint('Error logging analytics event: $e');
|
|
}
|
|
}
|
|
|
|
Future<void> setUserProperty({
|
|
required String name,
|
|
required String? value,
|
|
}) async {
|
|
try {
|
|
await _analytics.setUserProperty(name: name, value: value);
|
|
} catch (e) {
|
|
debugPrint('Error setting user property: $e');
|
|
}
|
|
}
|
|
|
|
Future<void> setUserId(String? id) async {
|
|
try {
|
|
await _analytics.setUserId(id: id);
|
|
} catch (e) {
|
|
debugPrint('Error setting user ID: $e');
|
|
}
|
|
}
|
|
|
|
Future<void> logScreenView({
|
|
required String screenName,
|
|
String? screenClass,
|
|
}) async {
|
|
try {
|
|
await _analytics.logScreenView(
|
|
screenName: screenName,
|
|
screenClass: screenClass,
|
|
);
|
|
} catch (e) {
|
|
debugPrint('Error logging screen view: $e');
|
|
}
|
|
}
|
|
}
|