Installation
PoseFlow ships as two Flutter packages. Most consumers only need the SDK; the Studio is only required when you also want to author new movements in-app.
Requirements
- Flutter ≥ 3.16
- Dart ≥ 3.0
- iOS ≥ 12.0
- Android
minSdkVersion≥ 21,compileSdk≥ 34 - Web: Chromium-based browsers (the pose pipeline runs as a Web Worker with WASM SIMD). Safari support is best-effort.
SDK only
dependencies: pose_flow: ^0.1.0import 'package:pose_flow/pose_flow.dart';
// On web platforms, or anywhere you want to avoid the native// plugin surface, import the web-safe subset instead://// import 'package:pose_flow/pose_flow_core.dart';Platform setup
iOS
Add a camera-usage description to ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key><string>PoseFlow needs the camera to track your movement.</string>Podfile: ensure platform :ios, '12.0' is set. No other CocoaPods
config is required, the plugin auto-registers.
Android
Camera + INTERNET permissions in android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" /><uses-permission android:name="android.permission.INTERNET" /><uses-feature android:name="android.hardware.camera" android:required="true" />In android/app/build.gradle set minSdkVersion 21 or higher.
Web
PoseFlow’s web pipeline needs three asset files at a URL prefix you choose:
web/<prefix>/blazepose_worker.jsweb/<prefix>/blazepose_pipeline.wasmweb/<prefix>/blazepose_pipeline.jsweb/<prefix>/blazepose_detector_weights.binweb/<prefix>/blazepose_optimized_weights_int8.binThese ship inside the SDK package. Tell PoseFlow where you’ve
served them by passing assetBasePath to the widget that loads them
, see integrating on web.
SDK + Studio
If you also want the authoring surface:
dependencies: pose_flow: ^0.1.0 pose_flow_studio: ^0.1.0The Studio depends on a few host-side packages that may not be auto-pulled depending on your app’s existing dependency tree, if your build fails on missing imports, also add:
camera: ^0.11.0 google_fonts: ^6.0.0 file_picker: ^10.0.0The Studio surfaces a single screen widget,
PoseFlowStudioScreen. You mount it once
you’ve wired up a StudioPersistence
bundle that points at your storage backend (Firebase, Drift, in-memory
for tests).
Verifying the install
A minimal sanity check, points a camera at a Pose skeleton
overlay without any movement logic:
import 'package:flutter/material.dart';import 'package:camera/camera.dart';import 'package:pose_flow/pose_flow.dart';
Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); final cameras = await availableCameras(); runApp(MaterialApp(home: Scaffold( body: PoseCameraView( cameras: cameras, showSkeleton: true, ), )));}If the camera previews and you see a green skeleton overlay tracking you, you’re good. Next stop: Quick start, wire up a rep counter against a bundled movement.