Initialization

  • Health({ DeviceInfoPlugin? deviceInfo })
  • Future<void> configure() – must be called before usage
  • HealthPlatformType get platformTypeappleHealth or googleHealthConnect
  • String get deviceId – stable device identifier (best-effort)

Health Connect (Android)

  • Future<HealthConnectSdkStatus?> getHealthConnectSdkStatus()
  • Future<bool> isHealthConnectAvailable()
  • Future<void> installHealthConnect()
History/background permissions:
  • Future<bool> isHealthDataHistoryAvailable()
  • Future<bool> isHealthDataHistoryAuthorized()
  • Future<bool> requestHealthDataHistoryAuthorization()
  • Future<bool> isHealthDataInBackgroundAvailable()
  • Future<bool> isHealthDataInBackgroundAuthorized()
  • Future<bool> requestHealthDataInBackgroundAuthorization()

Permissions

  • Future<bool?> hasPermissions(List<HealthDataType> types, { List<HealthDataAccess>? permissions })
  • Future<bool> requestAuthorization(List<HealthDataType> types, { List<HealthDataAccess>? permissions })
  • Future<void> revokePermissions() – Android only

Reading

  • Future<List<HealthDataPoint>> getHealthDataFromTypes({ required List<HealthDataType> types, DateTime startTime, DateTime endTime, Map<HealthDataType, HealthDataUnit>? preferredUnits, List<RecordingMethod> recordingMethodsToFilter = const [] })
  • Future<List<HealthDataPoint>> getHealthIntervalDataFromTypes({ required DateTime startDate, required DateTime endDate, required List<HealthDataType> types, required int interval, List<RecordingMethod> recordingMethodsToFilter = const [] })
  • Future<List<HealthDataPoint>> getHealthAggregateDataFromTypes({ required List<HealthDataType> types, required DateTime startDate, required DateTime endDate, int activitySegmentDuration = 1, bool includeManualEntry = true })
  • Future<HealthDataPoint?> getHealthDataByUUID({ required String uuid, required HealthDataType type }) – iOS only
  • Future<int?> getTotalStepsInInterval(DateTime start, DateTime end, { bool includeManualEntry = true })
Helpers:
  • List<HealthDataPoint> removeDuplicates(List<HealthDataPoint> points)

Writing

  • Future<bool> writeHealthData({ required double value, HealthDataUnit? unit, required HealthDataType type, required DateTime startTime, DateTime? endTime, RecordingMethod recordingMethod = RecordingMethod.automatic, String? clientRecordId, double? clientRecordVersion })
  • Future<bool> writeWorkoutData({ required HealthWorkoutActivityType activityType, required DateTime start, required DateTime end, int? totalEnergyBurned, HealthDataUnit totalEnergyBurnedUnit = HealthDataUnit.KILOCALORIE, int? totalDistance, HealthDataUnit totalDistanceUnit = HealthDataUnit.METER, String? title, RecordingMethod recordingMethod = RecordingMethod.automatic })
  • Future<bool> writeBloodPressure({ required int systolic, required int diastolic, required DateTime startTime, DateTime? endTime, RecordingMethod recordingMethod = RecordingMethod.automatic, String? clientRecordId, double? clientRecordVersion })
  • Future<bool> writeBloodOxygen({ required double saturation, required DateTime startTime, DateTime? endTime, RecordingMethod recordingMethod = RecordingMethod.automatic })
  • Future<bool> writeMeal({ required MealType mealType, required DateTime startTime, required DateTime endTime, String? name, double? caloriesConsumed, double? carbohydrates, double? protein, double? fatTotal, /* many micronutrients */ RecordingMethod recordingMethod = RecordingMethod.automatic, String? clientRecordId, double? clientRecordVersion })
  • Future<bool> writeMenstruationFlow({ required MenstrualFlow flow, required DateTime startTime, required DateTime endTime, required bool isStartOfCycle, RecordingMethod recordingMethod = RecordingMethod.automatic })
  • Future<bool> writeAudiogram({ required List<double> frequencies, required List<double> leftEarSensitivities, required List<double> rightEarSensitivities, required DateTime startTime, DateTime? endTime, Map<String, dynamic>? metadata }) – iOS only
  • Future<bool> writeInsulinDelivery(double units, InsulinDeliveryReason reason, DateTime startTime, DateTime endTime) – iOS only

Deleting

  • Future<bool> delete({ required HealthDataType type, required DateTime startTime, DateTime? endTime })
  • Future<bool> deleteByUUID({ required String uuid, HealthDataType? type }) – iOS requires type
  • Future<bool> deleteByClientRecordId({ required HealthDataType dataTypeKey, required String clientRecordId, String? recordId })

Models

  • HealthDataPoint – carries value, type, unit, dateFrom/to, source*, recordingMethod, optional workoutSummary, metadata, and deviceModel (iOS only)
  • HealthValue variants:
    • NumericHealthValue
    • WorkoutHealthValue
    • AudiogramHealthValue
    • ElectrocardiogramHealthValue (+ ElectrocardiogramVoltageValue)
    • NutritionHealthValue
    • InsulinDeliveryHealthValue
    • MenstruationFlowHealthValue

Enums

  • HealthDataType, HealthDataUnit, HealthDataAccess
  • RecordingMethod (iOS restricts writes to manual or automatic)
  • HealthWorkoutActivityType (platform-dependent availability)
  • MealType, InsulinDeliveryReason, ElectrocardiogramClassification
  • Android-only: HealthConnectSdkStatus
For exhaustive type/unit mappings, see lib/src/health_value_types.dart and lib/src/heath_data_types.dart.