AdvaitaADVAITA DOCS
GitHubGet started
Mobile SDKv4.3.11MIT License

Flutter SDK

acai_flutter supports iOS, Android, macOS, and Web from a single Dart codebase. On mobile it auto-tracks sessions, app lifecycles, screen views, and deep links.

Installation

Add to pubspec.yaml:

YAML
dependencies:
acai_flutter: ^4.3.11
Shell
flutter pub get

Initialise

Dart
import 'package:acai_flutter/acai_flutter.dart';
final acai = Acai(Configuration(
apiKey: 'YOUR_API_KEY',
serverUrl: 'https://events.yourdomain.com/2/httpapi',
defaultTracking: DefaultTrackingOptions(
sessions: true,
appLifecycles: true,
screenViews: true,
deepLinks: true,
),
logLevel: LogLevel.warn,
));
await acai.isBuilt;

Track events

Dart
acai.track(BaseEvent('Button Clicked'));
acai.track(BaseEvent(
eventType: 'Purchase Completed',
eventProperties: {
'product_id': 'prod_123',
'price': 49.99,
'currency': 'USD',
},
));
acai.flush();

Identify users

Dart
acai.setUserId('user_abc123');
final identify = Identify()
..set('plan', 'pro')
..setOnce('signup_date', '2024-01-15')
..add('session_count', 1)
..append('tags', 'power-user')
..unset('trial_active');
acai.identify(identify);
acai.setGroup('company', 'Acme Corp');
// Log out
acai.setUserId(null);
acai.reset();

Screen views

Dart
// Manual screen view
acai.track(BaseEvent(
eventType: '[Acai] Screen Viewed',
eventProperties: {'screen_name': 'Dashboard'},
));
// Or enable automatic via:
// defaultTracking: DefaultTrackingOptions(screenViews: true)

Config reference

OptionTypeDefaultDescription
apiKeyStringrequiredYour project API key.
serverUrlString?nullCustom collector endpoint.
flushQueueSizeint30Events per batch before flush.
flushIntervalMillisint30000Flush interval in ms.
flushMaxRetriesint5Max retry attempts.
optOutboolfalseDisable all tracking.
logLevelLogLevelwarnoff · error · warn · debug
useBatchboolfalseUse the /batch endpoint.
defaultTrackingDefaultTrackingOptions—Auto-track sessions, appLifecycles, screenViews, deepLinks.
enableCoppaControlboolfalseCOPPA compliance.
flushEventsOnClosebooltrueFlush on app backgrounded/closed.
migrateLegacyDatabooltrueMigrate data from older SDK versions.
minTimeBetweenSessionsMillisint300000Session gap threshold (5 min mobile).