Zum Hauptinhalt springen

Dart-SDK

Der Client für Flutter- und Dart-Apps: reines Dart, ohne Laufzeitabhängigkeiten, mit denselben Ereignissen, Flags und demselben Posteingang wie die übrigen Clients.

Wo es veröffentlicht ist

prodantix_sdk on pub.dev. Pure Dart, with no runtime dependencies.

Installation

Bash
dart pub add prodantix_sdk

Beispiel

Dart
import 'package:prodantix_sdk/prodantix_sdk.dart';

const projectKey = String.fromEnvironment('PRODANTIX_PUBLIC_KEY');

final client = ProdantixClient(
  apiKey: projectKey,
  host: 'https://eu.api.prodantix.com',
);

client.identify('user-123');
client.capture('order.completed', properties: {'total': 42});

final inbox = await client.getInbox();
await client.shutdown();
Dieser Client merkt sich, wer ihn benutzt: identify setzt die Distinct-ID einmal, und jeder spätere Aufruf betrifft diese Person. Rufen Sie beim Abmelden reset auf.

Entfernte und lokale Flags

Eine entfernte Prüfung fragt den Server und ist maßgeblich. Eine lokale Prüfung wertet im Prozess eine zwischengespeicherte Momentaufnahme des Regelwerks aus, ohne Hin und Her pro Aufruf, und genau das braucht ein heißer Pfad.

Dart
// Remote: asks the server, and is the authoritative answer.
if (await client.isFeatureEnabled('new-checkout')) {
  // ...
}

// Local: evaluated in process from a cached snapshot, no round trip per call.
if (await client.isFeatureEnabledLocal('new-checkout', properties: {'plan': 'pro'})) {
  // ...
}

// Every per-flag read records one $feature_flag_called exposure.
final variant = await client.getVariant('new-checkout');
if (variant?['key'] == 'treatment') {
  // ...
}

// A flag targeting a cohort reads this user's memberships from the store;
// pass them yourself to skip the lookup.
if (await client.isFeatureEnabledLocal('members', cohorts: ['<cohort id>'])) {
  // ...
}

Wo er läuft

Er zielt auf Mobilgeräte und die Dart-VM und erreicht das Netz über dart:io. Auf jeder anderen Plattform übergeben Sie eigene Transport- und Requester-Implementierungen; sonst ändert sich am Client nichts.

Dart
final client = ProdantixClient(
  apiKey: projectKey,
  host: 'https://eu.api.prodantix.com',
  transport: MyTransport(),
  requester: myRequester,
  // Hold a Socket.IO subscription to flag changes and refetch the snapshot on
  // push, instead of waiting for the 30s poll.
  streamFlags: true,
);