Flutter Compatibility & Dependency Matrix
embed_flutter — the official compatibility guide.
SDK version this guide describes: 0.2.0 Flutter coverage: 3.0 → latest stable · Dart: 3.0 – 3.x
This document defines which Flutter/Dart versions and platform floors the SDK supports, and pins the dependency versions it ships. Like the SDK itself, the practical floors come from the SDK's native dependencies (LiveKit + WebRTC, permission_handler), not from the SDK's own Dart code.
1. Flutter / Dart support
Declared in pubspec.yaml:
environment:
sdk: ">=3.0.0 <4.0.0"
flutter: ">=3.0.0"| Support tier | Flutter | What it means |
|---|---|---|
| ✅ Reference / tested | 3.41.x (current stable) | Built and exercised on a physical Android device (Pixel-class, Android 14) with Flutter 3.41.x / Dart 3.x. Known-good. |
| ✅ Supported | 3.0 → latest stable | Dart 3 sound-null-safety baseline. No SDK-level API differences across the range; validate in your app. |
| ⛔ Unsupported | < 3.0 (Dart 2) | The SDK is Dart-3 / sound-null-safety only. |
The SDK imposes no architecture or build-flag choice on your app. The floors below come from the dependency graph.
2. Platform floors
Inherited from livekit_client (→ flutter_webrtc) and permission_handler — the SDK's own code
adds nothing stricter. Always cross-check the current versions of those plugins for your exact target.
| Platform | Minimum | Driven by | Notes |
|---|---|---|---|
| Android | minSdk 21 (Android 5.0), compileSdk 34+ | WebRTC (flutter_webrtc) | Newer livekit_client / permission_handler majors nudge compileSdk up; use the Flutter default compileSdkVersion. Needs INTERNET, RECORD_AUDIO, MODIFY_AUDIO_SETTINGS, ACCESS_NETWORK_STATE, WAKE_LOCK, BLUETOOTH_CONNECT. |
| iOS | 13.0 deployment target | flutter_webrtc / LiveKit | Set platform :ios, '13.0' in the Podfile. Needs NSMicrophoneUsageDescription. |
| Web / desktop | not supported | LiveKit mobile stack + path_provider app-support dir | This SDK targets Android + iOS. |
3. Dependency matrix (0.2.0)
Direct dependencies and the version this SDK is pinned against. These are ordinary pub ^ ranges —
your app shares one copy through pub's version solver (no peer-dependency nesting as in npm).
| Package | Constraint | Role in the SDK | Compatibility notes |
|---|---|---|---|
flutter | SDK | UI + widget layer | — |
livekit_client | ^2.5.3 | Real-time voice: the LiveKit room, the reliable data channel (mission frames, ui_diff, panels), and the agent's video track | The heaviest native dep (WebRTC). Sets the Android/iOS floors. If your app also uses livekit_client, pub resolves to one compatible version — keep yours within ^2.5. |
permission_handler | ^12.0.1 | Microphone permission request + settings deep-link | Major bumps periodically raise the Android compileSdk/targetSdk floor. |
lottie | ^3.3.1 | FAB / avatar Lottie animations | Pure Dart rendering; low risk. |
shared_preferences | ^2.2.2 | Small key/value SDK state (widget/action config, event queues, app_user_id) | — |
path_provider | ^2.1.0 | App-support directory for the on-disk UI-graph cache (one JSON file per screen) | Deliberately not shared_preferences for the cache: its single-document store rewritten per commit would ANR the host on large screen files. |
http | ^1.2.0 | REST calls: /initialize, /token, /ui-graph, analytics | — |
There are no peer dependencies to declare and no platform-channel plugins beyond the above. The Chelsea Market font ships bundled with the package.
4. "Install succeeds" ≠ "works" — the checklist
flutter pub get will resolve on almost any Flutter 3.x, but a working integration also needs:
- iOS deployment target ≥ 13.0 in the Podfile (else
pod installfails on the WebRTC pod). - Android
minSdk ≥ 21(else the WebRTC AAR won't link). - Permissions declared —
NSMicrophoneUsageDescription(iOS) andRECORD_AUDIO+ friends (Android). Missing these = the call silently never connects. EmbedNavigatorObserverregistered and aUSER_DATAevent sent after login — without the observer the agent has no route context; withoutUSER_DATAthe token fetch is skipped and no call can start.- If your app already depends on
livekit_client, keep it within^2.5so pub resolves a single copy.
5. Upgrading
- The SDK is sound-null-safe Dart 3; upgrading Flutter within 3.x is safe.
- When bumping
livekit_clientorpermission_handlermajors, re-check the AndroidcompileSdkand iOS deployment-target floors — those two plugins are where platform-floor changes originate.
6. Recommended baseline for a new project
| Component | Recommended |
|---|---|
| Flutter | latest stable (≥ 3.24) |
| Dart | bundled with Flutter (3.x) |
| iOS deployment target | 13.0 |
Android minSdk / compileSdk | 21 / Flutter default (34+) |
embed_flutter | ^0.2.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