# Flutter Dependencies > Compatibility & dependency matrix for embed_flutter — supported Flutter/Dart versions, platform floors, pinned dependency versions, and the checklist that makes an install actually work. URL: /embed/integration/flutter/flutter-dependencies Markdown: /embed/integration/flutter/flutter-dependencies.md # Flutter Compatibility & Dependency Matrix [#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 [#1-flutter--dart-support] Declared in `pubspec.yaml`: ```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 [#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) [#3-dependency-matrix-020] 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 [#4-install-succeeds--works--the-checklist] `flutter pub get` will resolve on almost any Flutter 3.x, but a working integration also needs: 1. **iOS deployment target ≥ 13.0** in the Podfile (else `pod install` fails on the WebRTC pod). 2. **Android `minSdk ≥ 21`** (else the WebRTC AAR won't link). 3. **Permissions declared** — `NSMicrophoneUsageDescription` (iOS) and `RECORD_AUDIO` + friends (Android). Missing these = the call silently never connects. 4. **`EmbedNavigatorObserver` registered** and a **`USER_DATA` event sent after login** — without the observer the agent has no route context; without `USER_DATA` the token fetch is skipped and no call can start. 5. If your app already depends on `livekit_client`, keep it within `^2.5` so pub resolves a single copy. *** ## 5. Upgrading [#5-upgrading] * The SDK is sound-null-safe Dart 3; upgrading Flutter within 3.x is safe. * When bumping `livekit_client` or `permission_handler` majors, re-check the Android `compileSdk` and iOS deployment-target floors — those two plugins are where platform-floor changes originate. *** ## 6. Recommended baseline for a new project [#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](/embed/integration/flutter) for the step-by-step setup. *** ## Support [#support] * **Docs:** [https://docs.revrag.ai](https://docs.revrag.ai/) * **Email:** [contact@revrag.ai](mailto:contact@revrag.ai) * **Dashboard:** [app.revrag.ai](https://app.revrag.ai)