From 94006c3d7df9ed00237e3959b905bc370abb6286 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Mon, 14 Jan 2019 13:54:54 +0100 Subject: [PATCH] Analytics: Send an event for page changes This is not perfect as we do not get an event for the first page. https://github.com/flutter/flutter/issues/19249 --- lib/analytics.dart | 7 +++++++ lib/app.dart | 2 +- lib/screens/onboarding_screens.dart | 25 +++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 lib/analytics.dart diff --git a/lib/analytics.dart b/lib/analytics.dart new file mode 100644 index 00000000..f877852e --- /dev/null +++ b/lib/analytics.dart @@ -0,0 +1,7 @@ +import 'package:journal/app.dart'; + +import 'package:firebase_analytics/firebase_analytics.dart'; + +FirebaseAnalytics getAnalytics() { + return JournalApp.analytics; +} diff --git a/lib/app.dart b/lib/app.dart index 7866dc59..6bb109cd 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -18,7 +18,7 @@ class JournalApp extends StatelessWidget { var onBoardingDone = stateContainer.appState.onBoardingCompleted; var markOnBoardingCompleted = () { stateContainer.completeOnBoarding(); - analytics.logEvent(name: "on_boarding_complete"); + analytics.logEvent(name: "onboarding_complete"); }; var home = onBoardingDone ? new HomeScreen() diff --git a/lib/screens/onboarding_screens.dart b/lib/screens/onboarding_screens.dart index 8c49a281..94745c3b 100644 --- a/lib/screens/onboarding_screens.dart +++ b/lib/screens/onboarding_screens.dart @@ -6,6 +6,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:path/path.dart' as p; +import 'package:journal/analytics.dart'; import 'package:journal/state_container.dart'; import 'package:journal/storage/git.dart'; @@ -76,6 +77,30 @@ class OnBoardingScreenState extends State { } }, itemCount: pageCount, + onPageChanged: (int pageNum) { + print("PageView onPageChanged: " + pageNum.toString()); + String pageName = ""; + switch (pageNum) { + case 0: + pageName = "OnBoardingGitUrl"; + break; + + case 1: + pageName = "OnBoardingSshKey"; + break; + + case 2: + pageName = "OnBoardingGitClone"; + break; + } + getAnalytics().logEvent( + name: "onboarding_page_changed", + parameters: { + 'page_num': pageNum, + 'page_name': pageName, + }, + ); + }, ); return new Scaffold(