# Flutter Dependencies (0.3.0) > 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/v0.3.0/flutter-dependencies Markdown: /embed/integration/flutter/v0.3.0/flutter-dependencies.md # Flutter Compatibility & Dependency Matrix [#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 [#1-flutter--dart-support] Declared by the package: ```yaml 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 [#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) [#3-dependency-matrix-030] 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: ```bash flutter pub deps --style=compact | grep -E "livekit_client|flutter_webrtc|permission_handler|lottie" ``` *** ## 4. "Install succeeds" ≠ "works": the checklist [#4-install-succeeds--works-the-checklist] 1. **Flutter ≥ 3.29 / Dart ≥ 3.7**. Otherwise `flutter pub get` fails to resolve 0.3.0. 2. **iOS deployment target ≥ 13.0** in the Podfile. Otherwise `pod install` fails on the WebRTC pod. 3. **Android `minSdk ≥ 21`**. Otherwise the WebRTC AAR won't link. 4. **Permissions declared**: `NSMicrophoneUsageDescription` + `PERMISSION_MICROPHONE=1` (iOS), and `RECORD_AUDIO` and the related permissions (Android). If these are missing, the call silently never connects. 5. **`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. 6. If your app already depends on `livekit_client`, keep it within `^2.5` so pub resolves a single copy. *** ## 5. Upgrading [#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](/embed/integration/flutter/flutter-releases) for behaviour changes. * Upgrading Flutter within 3.x (from 3.29 on) is safe. * When you bump `livekit_client` or `permission_handler` majors, re-check the Android `compileSdk` and iOS deployment-target minimums. Those two plugins are where platform-minimum changes come from. *** ## 6. Recommended baseline for a new project [#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 [#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)