Этот точный пример использования приведен в документации по Firebase Analytics в разделе Отслеживание экранов .
Отслеживание экранов вручную полезно, если ваше приложение не использует отдельный UIViewControllerили Активность для каждого экрана, который вы можете отслеживать, например, в игре.
Это точно так же, как и в случае с Flutter, поскольку Flutter заботится об обновлениях экрана, поэтому Firebase Analytics автоматически отслеживаетэкраны невозможны.
Необходимо убедиться, что маршруты имеют доступ к экземпляру FirebaseAnalytics
, а затем вручную установить имя экрана (я установил в конструкторе виджета, как рекомендовано в комментариях, но там может бытьбудь более хорошим, тоже).
analytics.setCurrentScreen(screenName: 'Example1');
По желанию, чтобы упростить это, я добавил абстрактный класс
abstract class AnalyticsScreen {
String get screenName;
// FirebaseAnalytics constructor reuses a single instance, so it's ok to call like this
void setCurrentScreen() =>
FirebaseAnalytics().setCurrentScreen(screenName: screenName);
}
, затем я могу использовать этот класс в качестве mixin в моих маршрутах, дляпример в StatefulWidget
s
class Example extends StatefulWidget with AnalyticsScreen {
@override
get screenName => 'example';
@override
_ExampleState createState() => _ExampleState();
Example() {
setCurrentScreen();
}
}
Плюс в том, что вы можете использовать setCurrentScreen()
, и вы не забудете псевдоним, но в качестве минуса вы по-прежнему имеетеНе забудьте вызвать setCurrentScreen
в конструкторе виджета ... Если у вас есть более идиоматическое решение Dart для этого, дайте мне знать в комментариях.
Решение, приведенное выше, может (не тестировалосьэто достаточно хорошо, чтобы сказать определенно) не работает, одним из улучшений может быть использование RouteAware
в этих классах.