health_sync_flutter

Flutter plugin for HealthSync SDK - Health Connect integration with enterprise onboarding

pub.dev License: MIT

Features

  • Enterprise Onboarding System - Handles Health Connect stub detection & update loop bugs
  • 13+ Health Data Types - Steps, heart rate, sleep, activity, and more
  • OEM Intelligence - Built-in knowledge for 10+ manufacturers (Samsung, OnePlus, Xiaomi, etc.)
  • Native Step Tracking - Detects Android 14/15 native step counting
  • Background Sync - Device-specific optimization with retry strategies
  • 117+ Tests - Production-ready with comprehensive test coverage

Installation

dependencies:
  health_sync_flutter: ^1.0.1
flutter pub get

Quick Start

import 'package:health_sync_flutter/health_sync_flutter.dart';

final plugin = HealthConnectPlugin();

// Check availability
final available = await plugin.isHealthConnectAvailable();

// Request permissions
final permissions = await plugin.requestPermissions([
  HealthPermission.readSteps,
  HealthPermission.readHeartRate,
]);

// Fetch data
final steps = await plugin.readStepData(
  startDate: DateTime.now().subtract(Duration(days: 7)),
  endDate: DateTime.now(),
);

Onboarding System

Handle Health Connect "stub" reality on Android 14/15:

import 'package:health_sync_flutter/health_sync_flutter.dart';

final onboarding = HealthConnectOnboardingService();

// Start onboarding
onboarding.stateStream.listen((result) {
  switch (result.state) {
    case OnboardingState.checkingInstallation:
      // Show loading
      break;
    case OnboardingState.stubDetected:
      // Show "Update Health Connect" with device-specific instructions
      showUpdateDialog(result.userGuidance, result.playStoreUri);
      break;
    case OnboardingState.waitingForUpdate:
      // Show retry UI - handles 10s caching bug automatically
      break;
    case OnboardingState.complete:
      // Proceed to request permissions
      break;
    case OnboardingState.failed:
      // Show error with troubleshooting
      break;
  }
});

await onboarding.startOnboarding();

Device Compatibility

Manufacturer Stub Risk Update Loop Bug Retry Strategy
Nothing 95% Yes 8 retries × 2s
OnePlus 90% Yes 8 retries × 2s
Samsung 40% No 5 retries × 1s
Google Pixel <5% No 5 retries × 1s

Android Setup

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.health.READ_STEPS"/>
    <uses-permission android:name="android.permission.health.READ_HEART_RATE"/>
    <uses-permission android:name="android.permission.health.READ_SLEEP"/>
    <!-- Add permissions for other data types -->

    <queries>
        <package android:name="com.google.android.apps.healthdata" />
    </queries>

    <application>
        <activity android:name=".MainActivity">
            <!-- Health Connect intents -->
            <intent-filter>
                <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
            </intent-filter>
        </activity>
    </application>
</manifest>

build.gradle

android {
    compileSdkVersion 36
    defaultConfig {
        minSdkVersion 26
        targetSdkVersion 36
    }
}

Available Data Types

  • Steps, Distance, Calories (Active & Total)
  • Heart Rate, Resting Heart Rate, HRV
  • Sleep (with stages)
  • Exercise/Activity
  • Blood Oxygen, Blood Pressure
  • Body Temperature, Weight, Height

Background Sync

import 'package:health_sync_flutter/health_sync_flutter.dart';

final syncService = BackgroundSyncService();

// Check device compatibility
final compatibility = await syncService.checkCompatibility();
print('Sync reliability: ${compatibility.level}'); // high/medium/low

// Setup background sync
await syncService.setupBackgroundSync(
  frequency: compatibility.recommendedSyncFrequency,
  requiresCharging: compatibility.shouldRequireCharging,
);

Requirements

  • Flutter SDK ≥ 3.0.0
  • Android SDK 26+ (Android 8.0+)
  • Kotlin 1.9+

License

MIT - see LICENSE

Copyright (c) 2025 HCL Healthcare Product Team

GitHubIssuesPub.dev


Made with ❤️ by the HCL Healthcare Product Team

Libraries

health_sync_flutter
HealthSync Flutter Plugin