groveman_analytics 0.1.0 copy "groveman_analytics: ^0.1.0" to clipboard
groveman_analytics: ^0.1.0 copied to clipboard

Analytics for Dart/Flutter applications, with the same concepts for tree and planting analytics tree as groveman for logging.

Groveman Analytics #

pub License: MIT

Analytics for Dart/Flutter applications, inspired by the same concepts of tree and planting as groveman.

Behavior is added through AnalyticsTree instances. Install an instance by calling GrovemanAnalytics.plantTree. Installation should be done as early as possible, e.g, in the main function.

Usage #

Add it in your pubspec.yaml:

dependencies:
  groveman_analytics:

Import it where you want to use it e.g, in your main file.

import 'package:groveman_analytics/groveman_analytics.dart';

Define your analytics events by extending AnalyticsEvent:

class PurchaseCompletedEvent extends AnalyticsEvent {
  PurchaseCompletedEvent(this.value);

  final double value;

  @override
  String get eventName => 'purchase_completed';

  @override
  Map<String, dynamic>? get properties => {'value': value};
}

// Events without properties just omit the override
class AppOpenedEvent extends AnalyticsEvent {
  @override
  String get eventName => 'app_opened';
}

Plant a tree and start tracking:

void main() {
  GrovemanAnalytics.plantTree(MyAnalyticsTree());
  runApp(const MyApp());
}

API #

track #

Sends an analytics event to all planted trees.

await GrovemanAnalytics.track(PurchaseCompletedEvent(99.9));

identify #

Associates the current user with all planted trees.

await GrovemanAnalytics.identify(
  'user_123',
  properties: {'plan': 'pro', 'name': 'John'},
);

setSuperProperties / clearSuperProperties #

Properties automatically attached to every event.

await GrovemanAnalytics.setSuperProperties({
  'app_version': '1.0.0',
  'environment': 'production',
});

await GrovemanAnalytics.clearSuperProperties();

enable / disable #

Controls whether analytics data is collected. Useful for GDPR consent flows.

// User declined consent
await GrovemanAnalytics.disable();

// User accepted consent
await GrovemanAnalytics.enable();

reset #

Clears the current user session. Call this on user logout.

await GrovemanAnalytics.reset();

Creating a custom tree #

Extend AnalyticsTree to send events to any analytics service:

class MyAnalyticsTree extends AnalyticsTree {
  @override
  Future<void> track(AnalyticsEvent event) async {
    myService.logEvent(event.eventName, event.properties);
  }

  @override
  Future<void> identify(String userId, {Map<String, dynamic>? properties}) async {
    myService.identify(userId, properties);
  }

  @override
  Future<void> setSuperProperties(Map<String, dynamic> properties) async {
    myService.registerSuperProperties(properties);
  }

  @override
  Future<void> clearSuperProperties() async {
    myService.clearSuperProperties();
  }

  @override
  Future<void> enable() async => myService.enable();

  @override
  Future<void> disable() async => myService.disable();

  @override
  Future<void> reset() async => myService.reset();
}

Officially supported trees #

📝 Maintainers #

Kauê Martins

🤝 Support #

You liked this package? Then give it a ⭐️. If you want to help then:

  • Fork this repository
  • Send a Pull Request with new features
  • Share this package
  • Create issues if you find a bug or want to suggest a new extension

Pull Request title follows Conventional Commits. The scope available is groveman_analytics.

📝 License #

Copyright © 2026 Kauê Martins.
This project is MIT licensed.

0
likes
160
points
83
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Analytics for Dart/Flutter applications, with the same concepts for tree and planting analytics tree as groveman for logging.

Homepage
Repository (GitHub)
View/report issues

Topics

#analytics #tracker #tracking

License

MIT (license)

Dependencies

meta

More

Packages that depend on groveman_analytics