FirebaseAnalyticsObserver class

A NavigatorObserver that sends events to Firebase Analytics when the currently active ModalRoute changes.

When a route is pushed or popped, and if routeFilter is true, nameExtractor is used to extract a name from RouteSettings of the now active route and that name is sent to Firebase.

The following operations will result in sending a screen view event:

Navigator.pushNamed(context, '/contact/123');

Navigator.push<void>(context, MaterialPageRoute(
  settings: RouteSettings(name: '/contact/123'),
  builder: (_) => ContactDetail(123)));

Navigator.pushReplacement<void>(context, MaterialPageRoute(
  settings: RouteSettings(name: '/contact/123'),
  builder: (_) => ContactDetail(123)));

Navigator.pop(context);

To use it, add it to the navigatorObservers of your Navigator, e.g. if you're using a MaterialApp:

MaterialApp(
  home: MyAppHome(),
  navigatorObservers: [
    FirebaseAnalyticsObserver(analytics: service.analytics),
  ],
);

You can also track screen views within your ModalRoute by implementing RouteAware<ModalRoute<dynamic>> and subscribing it to FirebaseAnalyticsObserver. See the RouteObserver<ModalRoute<dynamic>> docs for an example.

Inheritance

Constructors

FirebaseAnalyticsObserver({required FirebaseAnalytics analytics, ScreenNameExtractor nameExtractor = defaultNameExtractor, RouteFilter routeFilter = defaultRouteFilter, dynamic onError(PlatformException error)?})
Creates a NavigatorObserver that sends events to FirebaseAnalytics.

Properties

analytics FirebaseAnalytics
final
hashCode int
The hash code for this object.
no setterinherited
nameExtractor ScreenNameExtractor
final
The navigator that the observer is observing, if any.
no setterinherited
routeFilter RouteFilter
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

debugObservingRoute(ModalRoute route) bool
Whether this observer is managing changes for the specified route.
inherited
didChangeTop(Route topRoute, Route? previousTopRoute) → void
The top most route has changed.
inherited
didPop(Route route, Route? previousRoute) → void
The Navigator popped route.
override
didPush(Route route, Route? previousRoute) → void
The Navigator pushed route.
override
didRemove(Route route, Route? previousRoute) → void
The Navigator removed route.
inherited
didReplace({Route? newRoute, Route? oldRoute}) → void
The Navigator replaced oldRoute with newRoute.
override
didStartUserGesture(Route route, Route? previousRoute) → void
The Navigator's routes are being moved by a user gesture.
inherited
didStopUserGesture() → void
User gesture is no longer controlling the Navigator.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
subscribe(RouteAware routeAware, ModalRoute route) → void
Subscribe routeAware to be informed about changes to route.
inherited
toString() String
A string representation of this object.
inherited
unsubscribe(RouteAware routeAware) → void
Unsubscribe routeAware.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited