Я хочу отслеживать изменения вкладки в приложении Flutter с помощью Firebase Analytics. В примере приложения они просто передают FirebaseAnalyticsObserver вниз по дереву виджетов:
class MyApp extends StatelessWidget {
static FirebaseAnalytics analytics = FirebaseAnalytics();
static FirebaseAnalyticsObserver observer =
FirebaseAnalyticsObserver(analytics: analytics);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Firebase Analytics Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
navigatorObservers: <NavigatorObserver>[observer],
home: MyHomePage(
title: 'Firebase Analytics Demo',
analytics: analytics,
observer: observer,
),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title, this.analytics, this.observer})
: super(key: key);
final String title;
final FirebaseAnalytics analytics;
final FirebaseAnalyticsObserver observer;
@override
_MyHomePageState createState() => _MyHomePageState(analytics, observer);
}
class _MyHomePageState extends State<MyHomePage> {
_MyHomePageState(this.analytics, this.observer);
final FirebaseAnalyticsObserver observer;
final FirebaseAnalytics analytics;
Но проблема в том, что моя вкладка находится далеко вниз по дереву виджетов. Поэтому трудно пройти весь путь вниз.
Как я могу инициализировать обозреватель FirebaseAnalytics для отслеживания обычного экранного маршрута, а также предоставить его на вкладку?
Я использую Provider и ChangeNotifier. Так что, может быть, я могу просто инициализировать в службе, а затем предоставить это вниз? Например
class Analytic extends ChangeNotifier {
static FirebaseAnalyticsObserver observer =
FirebaseAnalyticsObserver(analytics: analytics);
}