View as Markdownllms.txt

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 tierFlutterWhat it means
Reference / tested3.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.
Supported3.0 → latest stableDart 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.

PlatformMinimumDriven byNotes
AndroidminSdk 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.
iOS13.0 deployment targetflutter_webrtc / LiveKitSet platform :ios, '13.0' in the Podfile. Needs NSMicrophoneUsageDescription.
Web / desktopnot supportedLiveKit mobile stack + path_provider app-support dirThis 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).

PackageConstraintRole in the SDKCompatibility notes
flutterSDKUI + widget layer
livekit_client^2.5.3Real-time voice: the LiveKit room, the reliable data channel (mission frames, ui_diff, panels), and the agent's video trackThe 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.1Microphone permission request + settings deep-linkMajor bumps periodically raise the Android compileSdk/targetSdk floor.
lottie^3.3.1FAB / avatar Lottie animationsPure Dart rendering; low risk.
shared_preferences^2.2.2Small key/value SDK state (widget/action config, event queues, app_user_id)
path_provider^2.1.0App-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.0REST 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:

  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 declaredNSMicrophoneUsageDescription (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

  • 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.

ComponentRecommended
Flutterlatest stable (≥ 3.24)
Dartbundled with Flutter (3.x)
iOS deployment target13.0
Android minSdk / compileSdk21 / Flutter default (34+)
embed_flutter^0.2.0

See the Flutter integration guide for the step-by-step setup.


Support