bond_app_analytics 0.2.0
bond_app_analytics: ^0.2.0 copied to clipboard
Bond package provides a convenient way to log analytics events
bond_app_analytics #
A small, backend-agnostic analytics layer for Flutter Bond
apps. Your code fires AnalyticsEvents; one or more AnalyticsProviders (Firebase Analytics,
Mixpanel, your own backend, ...) decide how to record them.
Pure Dart, no dependencies (sdk: ^3.6.0).
Install #
dependencies:
bond_app_analytics: ^0.2.0
Events #
An event has a key, params and, optionally, a standard systemEventType
(SystemEvents.signedIn, viewItem, addToCart, madePurchase, search, ...):
import 'package:bond_app_analytics/bond_app_analytics.dart';
class PostOpened extends AnalyticsEvent {
PostOpened(this.postId);
final int postId;
@override
String get key => 'post_opened';
@override
Map<String, dynamic> get params => {'post_id': postId};
}
For a standard event, also mix in its data mixin (e.g. UserSignedIn, UserViewItem) and return
the matching systemEventType.
Providers #
Implement AnalyticsProvider once per analytics backend. log(event) routes standard events to the
matching log* method (logSignedIn, logViewItem, ...) and everything else to logEvent; any
log* method you don't override falls back to logEvent.
class ConsoleAnalyticsProvider extends AnalyticsProvider {
@override
void logEvent(AnalyticsEvent event) => print('${event.key} ${event.params}');
@override
void setUserId(int userId) => print('user $userId');
@override
void setUserAttributes(Map<String, dynamic> attributes) => print(attributes);
}
ConsoleAnalyticsProvider().log(PostOpened(42));
The Flutter Bond template registers its providers (e.g. a Firebase Analytics provider) in get_it and
fans every event out to all of them; see lib/core/app_analytics.dart there.