Flutter SDK
The Datafly Signal Flutter SDK wraps the native iOS and Android SDKs via platform channels, giving you full native performance with a Dart API.
Requirements
- Flutter 3.10+
- Dart 3.0+
- iOS 15+ / Android API 21+
Installation
Add to your pubspec.yaml:
dependencies:
datafly_signal: ^1.0.0Then run:
flutter pub getInitialisation
import 'package:datafly_signal/datafly_signal.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await DataflySignal.initialize(DataflyConfig(
pipelineKey: 'dk_live_abc123',
endpoint: 'https://data.example.com',
));
runApp(MyApp());
}Usage
import 'package:datafly_signal/datafly_signal.dart';
// Track a screen view
await DataflySignal.screen('Home');
// Track a custom event
await DataflySignal.track('add_to_cart', properties: {
'item_id': 'SKU-001',
'item_name': 'Running Shoes',
'price': 79.99,
'currency': 'GBP',
});
// Identify a user
await DataflySignal.identify('user-123', traits: {
'email': '[email protected]',
'name': 'Jane Doe',
});
// Associate with a company
await DataflySignal.group('company-456', traits: {'name': 'Acme Corp'});
// Handle deep link
await DataflySignal.handleDeepLink('https://example.com?utm_source=google');
// Set consent
await DataflySignal.setConsent({'analytics': true, 'marketing': false});
// Force flush
await DataflySignal.flush();
// Logout
await DataflySignal.reset();
// Get anonymous ID
final anonId = await DataflySignal.getAnonymousId();Navigator observer
Track screen views automatically with a NavigatorObserver:
class DataflyNavigatorObserver extends NavigatorObserver {
@override
void didPush(Route route, Route? previousRoute) {
if (route.settings.name != null) {
DataflySignal.screen(route.settings.name!);
}
}
}
// In your MaterialApp:
MaterialApp(
navigatorObservers: [DataflyNavigatorObserver()],
// ...
)Deep link handling
import 'package:app_links/app_links.dart';
final appLinks = AppLinks();
appLinks.uriLinkStream.listen((Uri uri) {
DataflySignal.handleDeepLink(uri.toString());
});The Flutter SDK communicates with the native SDKs via platform channels (MethodChannel). All event processing, offline queuing, batching, and retry logic runs natively on each platform.
Configuration
See Configuration for all available options.