Unified Flutter Setup
The unified Flutter setup works with Marketing Cloud Engagement and Marketing Cloud Next. Its plugins wrap the native Android and iOS libraries behind a single, consistent, modular Dart surface using Flutter’s platform channels.
If you use the Marketing Cloud Engagement-specific version of the Flutter plugin, you can migrate to the Flutter unified plugin.
Note
Who Should Use This Setup
Use this setup if:
- You’re integrating Flutter for the first time.
- You’re implementing Marketing Cloud Engagement with Flutter.
- You’re implementing Marketing Cloud Next with Flutter.
Prerequisites
Make sure these components meet the baseline requirements:
| Components | Minimum Requirement |
|---|---|
| Flutter | 3.3.0 or later |
| Dart SDK | >=3.0.6 <4.0.0 |
| iOS | 12.0 or later |
| Android | minSdk 26, compileSdk 36 |
Select your Package
The non-unified version of the Flutter plugin integrated Marketing Cloud features by using a single monolithic plugin that covered the entire SDK surface. The unified plugin splits the functionality into focused packages that use a consistent requestSdk() API. Its modular design ensures that your app includes only the required functionality.
The unified Flutter plugin offers these packages:
- Product packages: Represent a Marketing Cloud product. Install the
sfmc_marketingcloudsdkpackage for Marketing Cloud Engagement, thesfmc_mobileappmessagingpackage for Marketing Cloud Next, or both. - Core package:
sfmc_coreprovides the foundation that both product packages require. When you install a product package, the system resolves it automatically. - Feature packages: Packages for handling push notifications (
sfmc_push) and in-app messages (sfmc_iam) are optional add-ons. Install only the features that your app needs.
Architecture
- Melos workspace — The plugins are organized as a Melos workspace monorepo. Each package is independently versioned and publishable.
- requestSdk() pattern — Every package exposes a static
requestSdk()method that initializes the native SDK. - Event streams — Modules use
EventChannelto expose Dart streams for streaming events such as push token refresh, registration changes, and inbox updates. - Platform channels — Each package registers its own
MethodChannel(sfmc/sfmc_core,sfmc/push,sfmc/iam,sfmc/marketingcloudsdk,sfmc/mobileappmessaging).