Flutter Compatibility & Dependency Matrix
embed_flutter: the official compatibility guide.
SDK version this guide describes: 0.4.0 Flutter coverage: 3.29 → latest stable · Dart: 3.7 – 3.x
This page lists the Flutter and Dart versions and the platform minimums the SDK supports, and the dependency versions it ships with. The platform minimums come from the SDK's native dependencies (LiveKit + WebRTC, permission_handler), not from the SDK's own code.
1. Flutter / Dart support
Declared by the package:
environment:
sdk: ">=3.7.0 <4.0.0"
flutter: ">=3.29.0"| Support tier | Flutter | What it means |
|---|---|---|
| ✅ Reference / tested | 3.41.x (current stable) | Built and tested on physical Android devices with Flutter 3.41.x and Dart 3.11, and built for iOS. Known to work. |
| ✅ Supported | 3.29 → latest stable | The SDK reads semantics roles (SemanticsData.role), which first shipped in Flutter 3.29. Test the integration in your own app. |
| ⛔ Unsupported | < 3.29 | flutter pub get won't resolve embed_flutter ^0.4.0. Stay on embed_flutter: 0.2.0 (Flutter ≥ 3.0 / Dart ≥ 3.0) until you can upgrade. |
The Flutter and Dart minimums are unchanged from 0.3.0. The SDK doesn't require any particular app architecture or build flag.
2. Platform floors
These come from livekit_client (via flutter_webrtc) and permission_handler. The
SDK's own code adds no stricter requirement. Check the current versions of those plugins
for your exact targets.
| Platform | Minimum | Driven by | Notes |
|---|---|---|---|
| Android | minSdk 21 (Android 5.0), compileSdk 34+ | WebRTC (flutter_webrtc) | Newer livekit_client / permission_handler majors can raise compileSdk; use the Flutter default compileSdkVersion. Permissions: nothing to add. The SDK declares INTERNET, ACCESS_NETWORK_STATE, RECORD_AUDIO, MODIFY_AUDIO_SETTINGS, WAKE_LOCK, BLUETOOTH_CONNECT and BLUETOOTH (Android 11 and below) itself, and requests the runtime ones. |
| iOS | 13.0 deployment target | flutter_webrtc / LiveKit | Set platform :ios, '13.0' in the Podfile. Needs NSMicrophoneUsageDescription and PERMISSION_MICROPHONE=1. |
| Web / desktop | not supported | LiveKit mobile stack + app-support directory | The SDK targets Android + iOS only. |
Platform minimums are unchanged from 0.3.0.
3. Dependency matrix (0.4.0)
These are the SDK's direct dependencies. They are ordinary pub ^ ranges, so your app
shares a single copy of each through pub's version solver (there is no peer-dependency
nesting as in npm). Resolved is the version pub chose when 0.4.0 was built
(Flutter 3.41.5 / Dart 3.11). Your app may resolve to any compatible newer version.
| Package | Constraint | Resolved (0.4.0 build) | Role in the SDK | Compatibility notes |
|---|---|---|---|---|
flutter | SDK (≥ 3.29.0) | 3.41.5 | UI + widget layer, Semantics tree | — |
livekit_client | ^2.5.3 | 2.6.5 | Real-time voice, the data channel used by the agent, and the agent's video track | The heaviest native dependency (WebRTC), and the source of the Android/iOS minimums. If your app also uses livekit_client, keep it within ^2.5; a recent 2.x (2.9 or later) is recommended. |
flutter_webrtc | via livekit_client | 1.3.0 | WebRTC engine | Transitive. Don't add a second copy. |
permission_handler | ^12.0.1 | 12.0.1 | Microphone and Bluetooth permission requests + settings deep-link | Major bumps periodically raise the Android compileSdk/targetSdk minimum. |
lottie | ^3.3.1 | 3.3.2 | Agent button / avatar animations | Pure Dart rendering; low risk. |
shared_preferences | ^2.2.2 | 2.5.4 | Small key/value SDK state (configuration, event queue, the signed-in user) | — |
path_provider | ^2.1.0 | 2.1.5 | App-support directory for the on-device screen cache | — |
http | ^1.2.0 | 1.6.0 | REST calls (initialize, token, screen-cache sync, analytics) | — |
Direct dependency constraints are unchanged from 0.3.0. There are no peer dependencies to declare. The Chelsea Market font ships with the package.
New in 0.4.0: embed_flutter is a Flutter plugin. It has a small Android part (its
manifest carries the permissions above, plus a check for a connected Bluetooth headset)
and a Dart-only iOS part. Flutter picks it up automatically, and there is nothing to
configure. Android hosts with an older livekit_client (below 2.9) now keep call audio on
a connected headset too.
To check that your app resolves a single copy of each:
flutter pub deps --style=compact | grep -E "livekit_client|flutter_webrtc|permission_handler|lottie"4. "Install succeeds" ≠ "works": the checklist
- Flutter ≥ 3.29 / Dart ≥ 3.7. Otherwise
flutter pub getfails to resolve 0.4.0. - iOS deployment target ≥ 13.0 in the Podfile. Otherwise
pod installfails on the WebRTC pod. - Android
minSdk ≥ 21. Otherwise the WebRTC AAR won't link. - iOS permissions declared:
NSMicrophoneUsageDescription+PERMISSION_MICROPHONE=1. If these are missing, the call silently never connects. Android needs nothing: the SDK declares its own permissions. EmbedNavigatorObserverregistered and aUSER_DATAevent sent after login. Without the observer the agent has no route context. Without a user the token fetch is skipped and no call can start. From 0.4.0 the user is kept across app restarts untilEmbedWidget.clearUserSession(), which you must call on logout.- If your app already depends on
livekit_client, keep it within^2.5so pub resolves a single copy.
5. Upgrading
- 0.3.0 → 0.4.0: change the constraint to
^0.4.0, then:- Call
EmbedWidget.clearUserSession()on logout. The signed-in user is now kept across app restarts. - Update any analytics that read click
event_names. They no longer end in_<screen>; see the 0.4.0 release notes. - The Android permissions in your manifest can stay or go.
- Call
- 0.2.0 → 0.4.0: also upgrade Flutter to 3.29+ if needed.
- Upgrading Flutter within 3.x (from 3.29 on) is safe.
- When you bump
livekit_clientorpermission_handlermajors, re-check the AndroidcompileSdkand iOS deployment-target minimums. Those two plugins are where platform-minimum changes come from.
6. Recommended baseline for a new project
| Component | Recommended |
|---|---|
| Flutter | latest stable (≥ 3.29) |
| Dart | bundled with Flutter (≥ 3.7) |
| iOS deployment target | 13.0 |
Android minSdk / compileSdk | 21 / Flutter default (34+) |
embed_flutter | ^0.4.0 |
See the Flutter integration guide for the step-by-step setup.
Support
- Docs: https://docs.revrag.ai
- Email: contact@revrag.ai
- Dashboard: app.revrag.ai