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 Datafly.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 Datafly.screen('Home');
// Track a custom event
await Datafly.track('add_to_cart', properties: {
'item_id': 'SKU-001',
'item_name': 'Running Shoes',
'price': 79.99,
'currency': 'GBP',
});
// Identify a user
await Datafly.identify('user-123', traits: {
'email': 'jane@example.com',
'name': 'Jane Doe',
});
// Associate with a company
await Datafly.group('company-456', traits: {'name': 'Acme Corp'});
// Handle deep link
await Datafly.handleDeepLink('https://example.com?utm_source=google');
// Set consent
await Datafly.setConsent({'analytics': true, 'marketing': false});
// Force flush
await Datafly.flush();
// Logout
await Datafly.reset();
// Get anonymous ID
final anonId = await Datafly.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) {
Datafly.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) {
Datafly.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.