Flutter Compatibility & Dependency Matrix
embed_flutter: the official compatibility guide.
SDK version this guide describes: 0.3.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 Dart 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 a physical Android device (Pixel-class, Android 14) with Flutter 3.41.x and Dart 3.11. Known to work. |
| ✅ Supported | 3.29 → latest stable | 0.3.0 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.3.0. Stay on embed_flutter: 0.2.0 (Flutter ≥ 3.0 / Dart ≥ 3.0) until you can upgrade. |
New in 0.3.0: the minimum moved from Flutter 3.0 / Dart 3.0 to Flutter 3.29 / Dart 3.7. The SDK doesn't require any particular app architecture or build flag. The platform minimums below come from the dependency graph.
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. 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 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.2.0.
3. Dependency matrix (0.3.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.3.0 was built
(Flutter 3.41.5 / Dart 3.11.3). Your app may resolve to any compatible newer version.
| Package | Constraint | Resolved (0.3.0 build) | Role in the SDK | Compatibility notes |
|---|---|---|---|---|
flutter | SDK (≥ 3.29.0) | 3.41.5 | UI + widget layer, Semantics tree | Floor raised in 0.3.0. |
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. |
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 permission request + 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, user id) | — |
path_provider | ^2.1.0 | 2.1.5 | App-support directory for the on-device screen cache | 0.3.0 moves the cache to a new format. Old cached screens are discarded locally on upgrade, and you don't need to do anything. |
http | ^1.2.0 | 1.6.0 | REST calls (initialize, token, screen-cache sync, analytics) | — |
Direct dependency constraints are unchanged from 0.2.0. There are no peer dependencies to declare, and no platform-channel plugins beyond the ones above. The Chelsea Market font ships with the package.
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.3.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. - Permissions declared:
NSMicrophoneUsageDescription+PERMISSION_MICROPHONE=1(iOS), andRECORD_AUDIOand the related permissions (Android). If these are missing, 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
- 0.2.0 → 0.3.0: upgrade Flutter to 3.29+ if needed, then change the constraint to
^0.3.0. No code changes are required. See the 0.3.0 release notes for behaviour changes. - 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.3.0 |
Support
- Docs: https://docs.revrag.ai
- Email: contact@revrag.ai
- Dashboard: app.revrag.ai