You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
diplomatic-quarter/lib/analytics/google-analytics.dart

85 lines
2.5 KiB
Dart

3 years ago
import 'package:diplomaticquarterapp/analytics/analytic-events.dart';
import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_analytics/observer.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class Singleton {
const Singleton(); //Constant constructor
3 years ago
void hello() {
print('Hello world');
}
3 years ago
}
var analytics = FirebaseAnalytics();
3 years ago
class GAnalytics {
3 years ago
const GAnalytics();
static GAnalytics shared = const GAnalytics();
NavObserver navObserver() => NavObserver();
}
3 years ago
// adb shell setprop debug.firebase.analytics.app com.ejada.hmg -> Android
class NavObserver extends RouteObserver<PageRoute<dynamic>> {
_sendScreenView(PageRoute route) async {
log(String className) {
3 years ago
var event = AnalyticEvents.get(className);
3 years ago
if (event.active != null) {
analytics
.setCurrentScreen(
screenName: event.flutterName(), screenClassOverride: className)
.catchError(
(Object error) {
debugPrint('$FirebaseAnalyticsObserver: $error');
},
3 years ago
test: (Object error) {
return error is PlatformException;
},
);
}
}
3 years ago
if (route.settings.name != null &&
route.settings.name.isNotEmpty &&
route.settings.name != "null") {
3 years ago
var class_ = routes[route.settings.name](0);
3 years ago
if (class_ != null) log(class_.toStringShort());
} else if (route is FadePage) {
3 years ago
var class_ = route.page;
3 years ago
if (class_ != null) log(class_.toStringShort());
} else if (route is MaterialPageRoute) {
3 years ago
var class_ = route.builder(null);
3 years ago
if (class_ != null) log(class_.toStringShort());
} else {
3 years ago
print("");
}
}
@override
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
super.didPush(route, previousRoute);
if (route is PageRoute) {
_sendScreenView(route);
}
}
@override
void didReplace({Route<dynamic> newRoute, Route<dynamic> oldRoute}) {
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
if (newRoute is PageRoute) {
_sendScreenView(newRoute);
}
}
@override
void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
super.didPop(route, previousRoute);
// if (previousRoute is PageRoute && route is PageRoute) {
// _sendScreenView(previousRoute);
// }
}
3 years ago
}