philiprehberger_event_tracker 0.2.0
philiprehberger_event_tracker: ^0.2.0 copied to clipboard
Analytics event tracking with filtering, buffering, and multi-sink export
import 'package:philiprehberger_event_tracker/event_tracker.dart';
Future<void> main() async {
// Create a tracker with a console sink
final tracker = EventTracker();
tracker.addSink(const ConsoleSink());
// Track simple events
await tracker.track('page_view', properties: {'page': '/home'});
await tracker.track('button_click', properties: {'button': 'signup'});
// Use a buffered sink for batching
final memorySink = MemorySink();
final buffered = BufferedSink(memorySink, batchSize: 5);
tracker.addSink(buffered);
// Track more events
for (var i = 0; i < 7; i++) {
await tracker.track('loop_event', properties: {'index': '$i'});
}
// Flush remaining buffered events
await tracker.flush();
// Add a filter — only allow page_view events going forward
tracker.addFilter(EventFilter.byName({'page_view'}));
await tracker.track('page_view', properties: {'page': '/about'});
await tracker.track('button_click'); // This is filtered out
// Query the store
print('\nTotal events: ${tracker.store.count}');
print('Page views: ${tracker.store.eventsNamed('page_view').length}');
print('Summary: ${tracker.store.summary()}');
// Search
final results = tracker.store.search('signup');
print('Search "signup": ${results.length} result(s)');
// Export
print('\n--- Export ---');
print(tracker.store.export());
}