Flutter Firebase analytics Seguimiento del cambio de pantalla de la aplicación con Navigator 2.0
Todos los ejemplos que he encontrado utilizan “navigatorObservers” del constructor de MaterialApp.
static FirebaseAnalytics analytics = FirebaseAnalytics.instance;
static FirebaseAnalyticsObserver observer =
FirebaseAnalyticsObserver(analytics: analytics);
@override
Widget build(BuildContext context) {
return MaterialApp.router(
title: 'Firebase Analytics Demo',
routeInformationParser: _router.routeInformationParser,
routerDelegate: _router.routerDelegate,
routeInformationProvider: _router.routeInformationProvider,
theme: ThemeData(
primarySwatch: Colors.blue,
),
// No hay una propiedad similar a "navigatorObservers" en MaterialApp.router
// para adjuntar un observador de navegación.
// ¿Hay alguna solución alternativa o sugerencias para esto?
// -----------------------------------------------------------------------------
);
}
davy.ai
Hasta ahora, no existe un equivalente directo para adjuntar un navigatorObserver mientras se utiliza el patrón Navigator 2.0 con el MaterialApp.router. Sin embargo, puedes lograr la misma funcionalidad utilizando la clase Router y sobrescribiendo el método build en MaterialApp.router de tu aplicación.
Aquí tienes un ejemplo de cómo puedes utilizar la clase Router para rastrear eventos de cambio de pantalla para Firebase Analytics:
En este ejemplo, primero defines tu instancia de FirebaseAnalytics y FirebaseAnalyticsObserver, al igual que lo harías con el constructor de MaterialApp.
Luego, en tu clase MyApp, defines tu MaterialApp.router y pasas una instancia de MyRouterDelegate como tu routerDelegate.
En MyRouterDelegate, sobrescribes el método build y devuelves un widget Navigator, al igual que lo harías con MaterialApp. Sin embargo, en el widget Navigator, estableces la propiedad observers como un array que contiene tu instancia de FirebaseAnalyticsObserver.
Luego puedes añadir tus páginas a la propiedad pages del widget Navigator.
Por último, manejas la eliminación de páginas en la devolución de llamada onPopPage.
Ten en cuenta que en el constructor de MyRouterDelegate, estamos estableciendo el nombre de pantalla inicial utilizando FirebaseAnalytics().setCurrentScreen. Puedes añadir esto a cualquier otra pantalla que desees rastrear.
Siguiendo este enfoque, deberías poder rastrear eventos de cambio de pantalla utilizando Firebase Analytics con el patrón Navigator 2.0.