Cardio Flutter

pub package License: MIT Flutter

A Flutter package to measure heart rate, blood pressure, SpO2, respiratory rate, and HRV using your device camera.

Features

  • Heart Rate — Real-time BPM with confidence level
  • Blood Pressure — Systolic and diastolic readings (mmHg)
  • Oxygen Saturation (SpO2) — Blood oxygen percentage
  • Respiratory Rate — Breaths per minute
  • Heart Rate Variability (HRV) — Stress and recovery indicator (ms)
  • Dual Authentication — API Key or Access Token modes
  • Cross-platform — Android and iOS

Installation

Add to your pubspec.yaml:

dependencies:
  cardio_flutter: ^1.0.3

Then run:

flutter pub get

Platform Setup

Android

Add the following permissions to android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

iOS

The package fully supports iOS 11.0+ via WKWebView.

Add the following keys to ios/Runner/Info.plist:

<key>NSCameraUsageDescription</key>
<string>Camera access is required for cardiovascular health measurement</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone access is required for cardiovascular health measurement</string>
<key>io.flutter.embedded_views_preview</key>
<true/>

Usage

API Key Mode

import 'package:cardio_flutter/cardio_flutter.dart';

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => CardioWebView(
      apiKey: 'your-api-key',
      appUserId: 'user-123',
      organizationId: 'your-org-id', // optional in API key mode
    ),
  ),
);
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => CardioWebView(
      accessToken: 'your-access-token',
      organizationId: 'your-org-id',
      appUserId: 'user-123',
      useAccessToken: true,
    ),
  ),
);

Parameters

Parameter Type Required Description
apiKey String? For API key mode Your Cardio API key
accessToken String? For token mode Pre-fetched access token
appUserId String Yes Your app's user identifier
organizationId String? For token mode Organization ID
useAccessToken bool No Use access token auth (default: false)
validateApiKey bool No Validate API key on init (default: true)
primaryColor Color? No Override UI theme color (default: #317796)

Result Model

The CardioResult model provides structured access to measurement data:

Field Type Description
heartRate int? Heart rate in BPM
confidence String? Measurement confidence level
systolicBp int? Systolic blood pressure (mmHg)
diastolicBp int? Diastolic blood pressure (mmHg)
spo2 int? Blood oxygen saturation (%)
respiratoryRate int? Respiratory rate (breaths/min)
hrv int? Heart rate variability (ms)

Example

A complete example app is available in the example directory:

cd example
flutter run

License

See LICENSE file.

Libraries

cardio_flutter
Cardio Flutter - Flutter integration for Cardio SDK
cardio_result_model
cardio_webview