diff --git a/packages/health/example/lib/main.dart b/packages/health/example/lib/main.dart index 59c963dac..d96ce22e2 100644 --- a/packages/health/example/lib/main.dart +++ b/packages/health/example/lib/main.dart @@ -292,8 +292,7 @@ class HealthAppState extends State { value: 22, type: HealthDataType.LEAN_BODY_MASS, startTime: earlier, - endTime: now, - ); + endTime: now); // specialized write methods success &= await health.writeBloodOxygen( @@ -400,6 +399,12 @@ class HealthAppState extends State { startTime: earlier, endTime: now, recordingMethod: RecordingMethod.manual); + success &= await health.writeHealthData( + value: 4.3, + type: HealthDataType.UV_INDEX, + startTime: earlier, + endTime: now, + recordingMethod: RecordingMethod.manual); } setState(() { diff --git a/packages/health/example/lib/util.dart b/packages/health/example/lib/util.dart index 5c6f70be8..d896c6b02 100644 --- a/packages/health/example/lib/util.dart +++ b/packages/health/example/lib/util.dart @@ -62,6 +62,7 @@ const List dataTypesIOS = [ HealthDataType.MENSTRUATION_FLOW, HealthDataType.WATER_TEMPERATURE, HealthDataType.UNDERWATER_DEPTH, + HealthDataType.UV_INDEX, ]; /// List of data types available on Android. diff --git a/packages/health/ios/Classes/SwiftHealthPlugin.swift b/packages/health/ios/Classes/SwiftHealthPlugin.swift index 4bbfa4be8..f9a762d06 100644 --- a/packages/health/ios/Classes/SwiftHealthPlugin.swift +++ b/packages/health/ios/Classes/SwiftHealthPlugin.swift @@ -164,6 +164,7 @@ public class SwiftHealthPlugin: NSObject, FlutterPlugin { let MENSTRUATION_FLOW = "MENSTRUATION_FLOW" let WATER_TEMPERATURE = "WATER_TEMPERATURE" let UNDERWATER_DEPTH = "UNDERWATER_DEPTH" + let UV_INDEX = "UV_INDEX" // Health Unit types @@ -1670,6 +1671,10 @@ public class SwiftHealthPlugin: NSObject, FlutterPlugin { dataTypesDict[WATER_TEMPERATURE] = HKQuantityType.quantityType(forIdentifier: .waterTemperature)! dataTypesDict[UNDERWATER_DEPTH] = HKQuantityType.quantityType(forIdentifier: .underwaterDepth)! + + dataTypesDict[UV_INDEX] = HKSampleType.quantityType(forIdentifier: .uvExposure)! + dataQuantityTypesDict[UV_INDEX] = HKQuantityType.quantityType(forIdentifier: .uvExposure)! + } // Concatenate heart events, headache and health data types (both may be empty) diff --git a/packages/health/lib/health.g.dart b/packages/health/lib/health.g.dart index 70feb2de1..d985c19dc 100644 --- a/packages/health/lib/health.g.dart +++ b/packages/health/lib/health.g.dart @@ -137,6 +137,7 @@ const _$HealthDataTypeEnumMap = { HealthDataType.HEADACHE_SEVERE: 'HEADACHE_SEVERE', HealthDataType.HEADACHE_UNSPECIFIED: 'HEADACHE_UNSPECIFIED', HealthDataType.NUTRITION: 'NUTRITION', + HealthDataType.UV_INDEX: 'UV_INDEX', HealthDataType.GENDER: 'GENDER', HealthDataType.BIRTH_DATE: 'BIRTH_DATE', HealthDataType.BLOOD_TYPE: 'BLOOD_TYPE', diff --git a/packages/health/lib/src/heath_data_types.dart b/packages/health/lib/src/heath_data_types.dart index 0a1f8c400..6ab42d8d8 100644 --- a/packages/health/lib/src/heath_data_types.dart +++ b/packages/health/lib/src/heath_data_types.dart @@ -91,6 +91,7 @@ enum HealthDataType { HEADACHE_SEVERE, HEADACHE_UNSPECIFIED, NUTRITION, + UV_INDEX, // HealthKit Characteristics GENDER, BIRTH_DATE, @@ -212,6 +213,8 @@ const List dataTypeKeysIOS = [ HealthDataType.MENSTRUATION_FLOW, HealthDataType.WATER_TEMPERATURE, HealthDataType.UNDERWATER_DEPTH, + HealthDataType.UV_INDEX, + HealthDataType.TOTAL_CALORIES_BURNED, ]; /// List of data types available on Android @@ -362,6 +365,7 @@ const Map dataTypeToUnit = { HealthDataType.MENSTRUATION_FLOW: HealthDataUnit.NO_UNIT, HealthDataType.WATER_TEMPERATURE: HealthDataUnit.DEGREE_CELSIUS, HealthDataType.UNDERWATER_DEPTH: HealthDataUnit.METER, + HealthDataType.UV_INDEX: HealthDataUnit.COUNT, // Health Connect HealthDataType.TOTAL_CALORIES_BURNED: HealthDataUnit.KILOCALORIE,