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.0

Then run:

flutter pub get

Initialisation

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();

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()],
  // ...
)
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.