6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 40d7387e

AuthorNKL<nikolaj.king@gmail.com>
Date2025-03-07 08:27:39 +0100
clean and create a generic screen tracking through routeobserver

Changed files

.../lib/booking_details/booking_details_page.dart  |  1 -
 .../lib/housekeeping/housekeeping_page.dart        |  1 -
 comwell_key_app/lib/key/key_page.dart              |  4 +-
 comwell_key_app/lib/overview/overview_page.dart    |  2 -
 comwell_key_app/lib/routing/app_router.dart        |  2 +
 .../lib/routing/go_router_observer.dart            | 75 ++++++++++++++++++++++
 6 files changed, 78 insertions(+), 7 deletions(-)

Diff

diff --git a/comwell_key_app/lib/booking_details/booking_details_page.dart b/comwell_key_app/lib/booking_details/booking_details_page.dart
index a6a931be..a28c6748 100644
--- a/comwell_key_app/lib/booking_details/booking_details_page.dart
+++ b/comwell_key_app/lib/booking_details/booking_details_page.dart
@@ -22,7 +22,6 @@ class BookingDetailsPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- locator<ComwellTracking>().trackScreenView('booking_details_page',"/overview/booking_details");
return BlocConsumer<BookingDetailsBloc, BookingDetailsState>(
listener: (context, state) {},
builder: (context, state) {
diff --git a/comwell_key_app/lib/housekeeping/housekeeping_page.dart b/comwell_key_app/lib/housekeeping/housekeeping_page.dart
index b89b9e76..d353ac79 100644
--- a/comwell_key_app/lib/housekeeping/housekeeping_page.dart
+++ b/comwell_key_app/lib/housekeeping/housekeeping_page.dart
@@ -21,7 +21,6 @@ class HousekeepingPage extends StatefulWidget {
class _HousekeepingPageState extends State<HousekeepingPage> {
@override
Widget build(BuildContext context) {
- locator<ComwellTracking>().trackScreenView('housekeeping_page', "/overview//bookingsdetails/housekeeping");
return BlocProvider(
create: (context) => HouseKeepingCubit(),
child: BlocBuilder<HouseKeepingCubit, HouseKeepingState>(
diff --git a/comwell_key_app/lib/key/key_page.dart b/comwell_key_app/lib/key/key_page.dart
index 53c549b6..cde3cfa6 100644
--- a/comwell_key_app/lib/key/key_page.dart
+++ b/comwell_key_app/lib/key/key_page.dart
@@ -1,7 +1,6 @@
import 'package:comwell_key_app/common/components/round_icon_button.dart';
import 'package:comwell_key_app/key/bloc/key_bloc.dart';
-import 'package:comwell_key_app/tracking/comwell_tracking.dart';
-import 'package:comwell_key_app/utils/locator.dart';
+
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -14,7 +13,6 @@ class KeyPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
- locator<ComwellTracking>().trackScreenView('Keycard - read', '/keycard/read');
context.read<KeyBloc>().add(const StartScanning());
return BlocBuilder<KeyBloc, KeyState>(builder: (context, state) {
//if (state.status == KeyStatus.scanning || state.status != KeyStatus.openClosestReaderSuccess) {
diff --git a/comwell_key_app/lib/overview/overview_page.dart b/comwell_key_app/lib/overview/overview_page.dart
index 06b73ceb..81ef8930 100644
--- a/comwell_key_app/lib/overview/overview_page.dart
+++ b/comwell_key_app/lib/overview/overview_page.dart
@@ -40,8 +40,6 @@ class OverviewTabViewState extends State<OverviewPage>
@override
Widget build(BuildContext context) {
-
- locator<ComwellTracking>().trackScreenView('overview_page',"/overview");
return BlocListener<OverviewCubit, OverviewState>(
listener: (context, state) {
if (state is OverviewNoBookingFound) {
diff --git a/comwell_key_app/lib/routing/app_router.dart b/comwell_key_app/lib/routing/app_router.dart
index f4625ab9..05148ee7 100644
--- a/comwell_key_app/lib/routing/app_router.dart
+++ b/comwell_key_app/lib/routing/app_router.dart
@@ -24,6 +24,7 @@ import 'package:comwell_key_app/profile_settings/components/change_password_moda
import 'package:comwell_key_app/profile_settings/profile_settings_page.dart';
import 'package:comwell_key_app/redeem_debug/redeem_page.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
+import 'package:comwell_key_app/routing/go_router_observer.dart';
import 'package:comwell_key_app/utils/stream_to_listenable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
@@ -46,6 +47,7 @@ GoRouter goRouter(AuthenticationBloc authBloc) {
initialLocation: '/login',
navigatorKey: _rootNavigatorKey,
debugLogDiagnostics: true,
+ observers: [GoRouterObserver()],
refreshListenable:
StreamToListenable([authBloc.stream.asBroadcastStream()]),
redirect: (context, state) async {
diff --git a/comwell_key_app/lib/routing/go_router_observer.dart b/comwell_key_app/lib/routing/go_router_observer.dart
new file mode 100644
index 00000000..ae0296e0
--- /dev/null
+++ b/comwell_key_app/lib/routing/go_router_observer.dart
@@ -0,0 +1,75 @@
+import 'package:comwell_key_app/tracking/comwell_tracking.dart';
+import 'package:comwell_key_app/utils/locator.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
+
+class GoRouterObserver extends NavigatorObserver {
+ @override
+ void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) {
+ debugPrint('DidPush: $route');
+ final routeName = route.settings.name ?? 'Unknown';
+ locator<ComwellTracking>().trackScreenView('$routeName - page', getPath(routeName));
+ }
+
+ @override
+ void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) {
+ final parentRouteName = previousRoute?.settings.name ?? 'Unknown';
+ final trackInfo = '$parentRouteName - page';
+ final trackPath = getPath(parentRouteName);
+ debugPrint('DidPop: $route, tracking: $trackInfo, path: $trackPath');
+ locator<ComwellTracking>().trackScreenView(trackInfo, trackPath);
+ }
+
+ @override
+ void didRemove(Route<dynamic> route, Route<dynamic>? previousRoute) {
+ debugPrint('DidRemove: $route');
+ }
+
+ @override
+ void didReplace({Route<dynamic>? newRoute, Route<dynamic>? oldRoute}) {
+ debugPrint('DidReplace: $newRoute');
+ }
+}
+
+
+
+String getPath(String routeName) {
+ switch (routeName) {
+ case 'overview':
+ return '/overview';
+ case 'login':
+ return '/login';
+ case 'profile':
+ return '/overview/../profile';
+ case 'housekeeping':
+ return '/overview/bookingsdetails/housekeeping';
+ case 'key':
+ return '/overview/bookingsdetails/key';
+ case 'hotelInformation':
+ return '/overview/bookingsdetails/hotelInformation';
+ case 'restaurant':
+ return '/overview/bookingsdetails/hotelInformation/restaurant';
+ case 'spa':
+ return '/overview/bookingsdetails/hotelInformation/spa';
+ case 'parking':
+ return '/overview/bookingsdetails/hotelInformation/parking';
+ case 'checkOut':
+ return '/overview/bookingsdetails/checkOut';
+ case 'checkIn':
+ return '/overview/bookingsdetails/checkIn';
+ case 'contact':
+ return '/overview/bookingsdetails/contact';
+ case 'preregistration':
+ return '/overview/bookingsdetails/preregistration';
+ case 'findBooking':
+ return '/overview/findBooking';
+ case 'pastCancelledBookings':
+ return '/overview/pastCancelledBookings';
+ case 'profileSettings':
+ return '/overview/profile/profileSettings';
+
+ // Add more cases as needed
+ default:
+ return 'Unknown route';
+ }
+}
\ No newline at end of file