feat: integrate Firebase Analytics and configure navigation observer in app router
This commit is contained in:
13
lib/core/analytics/firebase_analytics_config.dart
Normal file
13
lib/core/analytics/firebase_analytics_config.dart
Normal file
@@ -0,0 +1,13 @@
|
||||
import 'package:firebase_analytics/firebase_analytics.dart';
|
||||
|
||||
/// Firebase Analytics feeds the linked GA4 property (`G-DHR81R6Z63` on web,
|
||||
/// native app streams for iOS/Android). One instance is reused across the app
|
||||
/// for events, and one observer tracks GoRouter screen transitions.
|
||||
class FirebaseAnalyticsConfig {
|
||||
FirebaseAnalyticsConfig._();
|
||||
|
||||
static final FirebaseAnalytics instance = FirebaseAnalytics.instance;
|
||||
|
||||
static final FirebaseAnalyticsObserver navigationObserver =
|
||||
FirebaseAnalyticsObserver(analytics: instance);
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:real_estate_mobile/core/analytics/firebase_analytics_config.dart';
|
||||
import 'package:real_estate_mobile/core/analytics/umami_analytics.dart';
|
||||
import 'package:real_estate_mobile/core/constants/app_colors.dart';
|
||||
import 'package:real_estate_mobile/core/widgets/app_shell.dart';
|
||||
@@ -45,7 +46,10 @@ final routerProvider = Provider<GoRouter>((ref) {
|
||||
return GoRouter(
|
||||
initialLocation: '/splash',
|
||||
refreshListenable: authRefreshNotifier,
|
||||
observers: [UmamiAnalytics.navigationObserver],
|
||||
observers: [
|
||||
UmamiAnalytics.navigationObserver,
|
||||
FirebaseAnalyticsConfig.navigationObserver,
|
||||
],
|
||||
redirect: (context, state) {
|
||||
final authState = ref.read(authProvider);
|
||||
final isAuthenticated = authState.status == AuthStatus.authenticated;
|
||||
|
||||
@@ -10,6 +10,7 @@ import device_info_plus
|
||||
import emoji_picker_flutter
|
||||
import facebook_auth_desktop
|
||||
import file_selector_macos
|
||||
import firebase_analytics
|
||||
import firebase_core
|
||||
import firebase_messaging
|
||||
import flutter_local_notifications
|
||||
@@ -29,6 +30,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||
EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin"))
|
||||
FacebookAuthDesktopPlugin.register(with: registry.registrar(forPlugin: "FacebookAuthDesktopPlugin"))
|
||||
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
||||
FirebaseAnalyticsPlugin.register(with: registry.registrar(forPlugin: "FirebaseAnalyticsPlugin"))
|
||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
|
||||
|
||||
24
pubspec.lock
24
pubspec.lock
@@ -393,6 +393,30 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.3+5"
|
||||
firebase_analytics:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: firebase_analytics
|
||||
sha256: "4f85b161772e1d54a66893ef131c0a44bd9e552efa78b33d5f4f60d2caa5c8a3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.6.0"
|
||||
firebase_analytics_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_analytics_platform_interface
|
||||
sha256: a44b6d1155ed5cae7641e3de7163111cfd9f6f6c954ca916dc6a3bdfa86bf845
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.4.3"
|
||||
firebase_analytics_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: firebase_analytics_web
|
||||
sha256: c7d1ed1f86ae64215757518af5576ff88341c8ce5741988c05cc3b2e07b0b273
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.10+16"
|
||||
firebase_core:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
||||
@@ -71,6 +71,9 @@ dependencies:
|
||||
# Microsoft Clarity (session recording / heatmaps)
|
||||
clarity_flutter: ^1.8.0
|
||||
|
||||
# Google Analytics (via Firebase Analytics — feeds the linked GA4 property)
|
||||
firebase_analytics: ^11.3.0
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
Reference in New Issue
Block a user