Initialization
Health({ DeviceInfoPlugin? deviceInfo })Future<void> configure()– must be called before usageHealthPlatformType get platformType–appleHealthorgoogleHealthConnectString get deviceId– stable device identifier (best-effort)
Health Connect (Android)
Future<HealthConnectSdkStatus?> getHealthConnectSdkStatus()Future<bool> isHealthConnectAvailable()Future<void> installHealthConnect()
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 onlyFuture<int?> getTotalStepsInInterval(DateTime start, DateTime end, { bool includeManualEntry = true })
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 onlyFuture<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 typeFuture<bool> deleteByClientRecordId({ required HealthDataType dataTypeKey, required String clientRecordId, String? recordId })
Models
HealthDataPoint– carriesvalue,type,unit,dateFrom/to,source*,recordingMethod, optionalworkoutSummary,metadata, anddeviceModel(iOS only)HealthValuevariants:NumericHealthValueWorkoutHealthValueAudiogramHealthValueElectrocardiogramHealthValue(+ElectrocardiogramVoltageValue)NutritionHealthValueInsulinDeliveryHealthValueMenstruationFlowHealthValue
Enums
HealthDataType,HealthDataUnit,HealthDataAccessRecordingMethod(iOS restricts writes tomanualorautomatic)HealthWorkoutActivityType(platform-dependent availability)MealType,InsulinDeliveryReason,ElectrocardiogramClassification- Android-only:
HealthConnectSdkStatus
lib/src/health_value_types.dart and lib/src/heath_data_types.dart.