/* * SPDX-FileCopyrightText: 2019-2021 Vishesh Handa * * SPDX-License-Identifier: AGPL-3.0-or-later */ import 'package:flutter/widgets.dart'; import 'package:gitjournal/logger/logger.dart'; import 'analytics.dart'; class AnalyticsRouteObserver extends RouteObserver> { Future _sendScreenView(PageRoute 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 route, Route? previousRoute) { super.didPush(route, previousRoute); if (route is PageRoute) { _sendScreenView(route); } } @override void didReplace({Route? newRoute, Route? oldRoute}) { super.didReplace(newRoute: newRoute, oldRoute: oldRoute); if (newRoute is PageRoute) { _sendScreenView(newRoute); } } @override void didPop(Route route, Route? previousRoute) { super.didPop(route, previousRoute); if (previousRoute is PageRoute && route is PageRoute) { _sendScreenView(previousRoute); } } }