Skip to content
NuxieNuxie
Esc
↑↓navigate↵open⌘Jpreview
Open Nuxie
On this page

Connect with Flutter

Connect a Flutter app to the native SDKs and verify an Experience on iOS or Android.

The Flutter SDK displays native Nuxie Experiences in your iOS and Android app. Use its Dart client to send events, handle purchases, and update widgets when feature access changes. Requires Flutter 3.41+ and Dart 3.11+.

Installation

Installation

From the Flutter SDK checkout, prepare the native dependencies:

python3 scripts/prepare-native.py

Add the package to pubspec.yaml, then run flutter pub get:

dependencies:
  nuxie_flutter:
    path: /absolute/path/to/nuxie-flutter/packages/nuxie_flutter

For iOS 15+, enable Swift Package Manager:

flutter:
  config:
    enable-swift-package-manager: true

For Android API 23+, use Java 17+, compile SDK 36, and a FlutterFragmentActivity host. The preparation command creates the native source checkout under .native/android. Add its composite build to your app’s android/settings.gradle.kts:

includeBuild("/absolute/path/to/nuxie-flutter/.native/android") {
    dependencySubstitution {
        substitute(module("ai.nuxie:nuxie-android"))
            .using(project(":nuxie-android"))
    }
}

Set your MainActivity to inherit from FlutterFragmentActivity:

import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity : FlutterFragmentActivity()

For iOS, Swift Package Manager resolves the native SDK revision declared by the plugin. See native setup for local native source builds.

Initialize

Initialize

Copy your app’s public keys from Connect your app. Use pk_test_ keys in development builds and pk_live_ keys in release builds. Keep the default service environment for both; the key selects preview or live content.

After WidgetsFlutterBinding.ensureInitialized(), configure Nuxie before runApp:

import 'package:nuxie_flutter/nuxie_flutter.dart';

final nuxie = Nuxie.instance;
await nuxie.configure(const NuxieConfiguration(
  apiKeys: NuxieApiKeys(
    ios: String.fromEnvironment('NUXIE_IOS_API_KEY'),
    android: String.fromEnvironment('NUXIE_ANDROID_API_KEY'),
  ),
));

Place this in your asynchronous main function and handle configuration errors before runApp. Supply the platform keys when running Flutter:

flutter run \
  --dart-define=NUXIE_IOS_API_KEY=YOUR_IOS_PUBLIC_KEY \
  --dart-define=NUXIE_ANDROID_API_KEY=YOUR_ANDROID_PUBLIC_KEY

Run your app on a device or simulator. Connect your app shows Connected after Nuxie receives a request from the SDK.

Trigger an Experience

Trigger an Experience

Publish an Experience for this app with the event trigger integration_test. Set its re-entry rule to Every time if you want to show it repeatedly while integrating. Add this call to a button handler after setup:

await nuxie.trigger('integration_test');

Tapping the button sends the event. Nuxie displays the Experience when the customer matches its audience and delivery rules. For an existing Experience, replace integration_test with its published event name.

Connect your app changes to Shown after the SDK reports that the Experience appeared.

Update an Experience

Update an Experience

Edit the Experience and publish your changes. Bring the app back to the foreground to fetch the update, then send the event again with a customer who can re-enter. New Journeys use the updated version; a Journey already in progress keeps the version it started with. The app code stays the same.

See the SDK reference for identity, feature access, and App Actions. Delivery explains trigger and audience configuration.

Last updated on

Was this page helpful?