Skip to content

Commit

Permalink
Add analytics flag for button clicks
Browse files Browse the repository at this point in the history
  • Loading branch information
thecodepapaya committed Sep 10, 2021
1 parent bbcd77b commit 43c502b
Show file tree
Hide file tree
Showing 9 changed files with 43 additions and 7 deletions.
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@
"cSpell.words": [
"fase",
"kowi",
"linkedin",
"meuzard",
"microservice",
"stackoverflow",
"udhari",
"wlan"
],
"cSpell.ignoreWords": [
"Hori",
"XCRCBL"
]
}
2 changes: 2 additions & 0 deletions lib/404.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:portfolio/components/analytics.dart';
import 'package:portfolio/components/scale_animator.dart';
import 'package:portfolio/generated/l10n.dart';
import 'package:responsive_builder/responsive_builder.dart';
Expand Down Expand Up @@ -60,6 +61,7 @@ class _NotFound404State extends State<NotFound404> {
onTap: () {
Navigator.of(context)
.pushReplacementNamed(Navigator.defaultRouteName);
PortfolioAnalytics.log(LogType.home404Click);
},
child: Text(
S.of(context).notFoundHome,
Expand Down
2 changes: 2 additions & 0 deletions lib/about/contact.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:portfolio/components/analytics.dart';
import 'package:portfolio/utils/constants.dart';
import 'package:url_launcher/url_launcher.dart';

Expand Down Expand Up @@ -50,6 +51,7 @@ class Contact extends StatelessWidget {
return IconButton(
onPressed: () {
launch(url);
PortfolioAnalytics.log(LogType.contactClick, property: url);
},
icon: FaIcon(
iconData,
Expand Down
2 changes: 2 additions & 0 deletions lib/about/tabs.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:portfolio/components/analytics.dart';
import 'package:portfolio/components/scale_animator.dart';

class Tabs extends StatefulWidget {
Expand Down Expand Up @@ -34,6 +35,7 @@ class _TabsState extends State<Tabs> {
duration: Duration(seconds: 1),
curve: Curves.easeInOut,
);
PortfolioAnalytics.log(LogType.tabClick, property: text);
},
child: ScaleAnimator(
scaleExtent: 1.2,
Expand Down
2 changes: 2 additions & 0 deletions lib/blogs/blog_card.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:portfolio/blogs/blog_data.dart';
import 'package:portfolio/components/analytics.dart';
import 'package:portfolio/components/portfolio_card.dart';
import 'package:portfolio/utils/constants.dart';
import 'package:portfolio/components/card_tag.dart';
Expand All @@ -21,6 +22,7 @@ class BlogCard extends StatelessWidget {
return GestureDetector(
onTap: () {
launch(data.url);
PortfolioAnalytics.log(LogType.cardClick, property: data.url);
},
child: PortfolioCard(
//TODO: Change to click when at least one blogs is up
Expand Down
25 changes: 19 additions & 6 deletions lib/components/analytics.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_analytics/observer.dart';

enum LogType {
cardClick,
contactClick,
cardGitHubClick,
cardExternalLinkClick,
footerCreditClick,
tabClick,
home404Click,
}

class PortfolioAnalytics {
static late FirebaseAnalytics analytics;
static late FirebaseAnalyticsObserver observer;
static initialize() {
analytics = FirebaseAnalytics();
observer = FirebaseAnalyticsObserver(analytics: analytics);
static late FirebaseAnalytics _analytics = FirebaseAnalytics();

static Future<void> log(LogType logType, {String? property}) async {
await _analytics.logEvent(
name: logType.toString(),
parameters: <String, dynamic>{
'property': property,
},
);
}
}
2 changes: 2 additions & 0 deletions lib/components/footer.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:portfolio/components/analytics.dart';
import 'package:portfolio/utils/constants.dart';
import 'package:portfolio/generated/l10n.dart';
import 'package:responsive_builder/responsive_builder.dart';
Expand Down Expand Up @@ -29,6 +30,7 @@ class Footer extends StatelessWidget {
"."),
onTap: () {
launch("https://dribbble.com/NicolasMzrd");
PortfolioAnalytics.log(LogType.footerCreditClick);
},
),
),
Expand Down
3 changes: 2 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ class MyApp extends StatelessWidget {
primaryColor: ColorPalette.background,
cardTheme: PortfolioTheme.cardTheme(context),
textTheme: PortfolioTheme.textTheme(context),
iconTheme: PortfolioTheme.iconTheme(context), colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Colors.white),
iconTheme: PortfolioTheme.iconTheme(context),
colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Colors.white),
),
onGenerateRoute: onGenerateRoute,
initialRoute: '/',
Expand Down
9 changes: 9 additions & 0 deletions lib/projects/project_card.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:portfolio/components/analytics.dart';
import 'package:portfolio/components/portfolio_card.dart';
import 'package:portfolio/utils/constants.dart';
import 'package:portfolio/projects/project_data.dart';
Expand Down Expand Up @@ -70,6 +71,10 @@ class ProjectCard extends StatelessWidget {
splashRadius: Constants.cardIconSplash,
onPressed: () {
launch(data.gitHub);
PortfolioAnalytics.log(
LogType.cardGitHubClick,
property: data.gitHub,
);
},
),
if (data.link.isNotEmpty) SizedBox(width: 8),
Expand All @@ -85,6 +90,10 @@ class ProjectCard extends StatelessWidget {
splashRadius: Constants.cardIconSplash,
onPressed: () {
launch(data.link);
PortfolioAnalytics.log(
LogType.cardExternalLinkClick,
property: data.link,
);
},
),
],
Expand Down

0 comments on commit 43c502b

Please sign in to comment.