1+
2+
3+ import 'package:analitix/analitix/abstract/base_reporter.dart' ;
4+ import 'package:analitix/analitix/reporters/custom_reporter.dart' ;
5+ import 'package:analitix/analitix/reporters/printer_reporter.dart' ;
6+
7+ import '../models/analytix_event.dart' ;
8+ import '../reporters/excel_reporter.dart' ;
9+
10+ class AnalytixManager {
11+
12+ static final AnalytixManager _instance = AnalytixManager ._internal ();
13+
14+ bool _isCollectionEnabled = true ;
15+ String ? _screenName;
16+ String ? _userId;
17+ Map <String , dynamic > _userProperties = {}; /// todo add device properties collection
18+ List <AnalytixEvent > _allEvents = [];
19+
20+ factory AnalytixManager () {
21+ return _instance;
22+ }
23+
24+ AnalytixManager ._internal ();
25+
26+ List <BaseReporter > reporters = [
27+ PrinterReporter (),
28+ CustomReporter (),
29+ ExcelReporter (),
30+ ];
31+
32+ void init () {
33+ print ('AnalytixManager init' );
34+ }
35+
36+ void logEvent (String name, String subEventName, Map <String , dynamic > params) {
37+ if (! _isCollectionEnabled) {
38+ print ('AnalytixManager logEvent: Collection is disabled' );
39+ return ;
40+ }
41+ print ('AnalytixManager logEvent: $name , $params ' );
42+
43+ for (BaseReporter reporter in reporters) {
44+ params['screenName' ] = _screenName;
45+ params['userId' ] = _userId;
46+ params['userProperties' ] = _userProperties;
47+ var newEvent = AnalytixEvent (name, subEventName: subEventName, parameters: params);
48+ reporter.logEvent (newEvent);
49+ _allEvents.add (newEvent);
50+ }
51+ }
52+
53+ void setUserProperty (String name, dynamic value) {
54+ print ('AnalytixManager setUserProperty: $name , $value ' );
55+ _userProperties[name] = value;
56+ }
57+
58+ void setUserId (String userId) {
59+ print ('AnalytixManager setUserId: $userId ' );
60+ _userId = userId;
61+ }
62+
63+ void setScreenName (String name) {
64+ print ('AnalytixManager setScreenName: $name ' );
65+ _screenName = name;
66+ }
67+
68+ void setAnalyticsCollectionEnabled (bool enabled) {
69+ print ('AnalytixManager setAnalyticsCollectionEnabled: $enabled ' );
70+ _isCollectionEnabled = enabled;
71+ }
72+
73+ void resetAnalyticsData () {
74+ print ('AnalytixManager resetAnalyticsData' );
75+ _userId = null ;
76+ _screenName = null ;
77+ _userProperties = {};
78+ _allEvents.clear ();
79+ }
80+ }
0 commit comments