mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-15 07:56:11 +08:00
49 lines
1.3 KiB
Dart
49 lines
1.3 KiB
Dart
import 'package:flutter/widgets.dart';
|
|
|
|
import 'package:gitjournal/logger/logger.dart';
|
|
import 'analytics.dart';
|
|
|
|
class AnalyticsRouteObserver extends RouteObserver<PageRoute<dynamic>> {
|
|
void _sendScreenView(PageRoute<dynamic> route) async {
|
|
var screenName = route.settings.name;
|
|
if (route.runtimeType.toString().startsWith("_SearchPageRoute")) {
|
|
screenName = "/search";
|
|
}
|
|
|
|
if (screenName == null) {
|
|
screenName = 'Unknown';
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await Analytics.instance?.setCurrentScreen(screenName: screenName);
|
|
} catch (e, stackTrace) {
|
|
Log.e("AnalyticsRouteObserver", ex: e, stacktrace: stackTrace);
|
|
}
|
|
}
|
|
|
|
@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);
|
|
}
|
|
}
|
|
}
|