createSkinTemperature method
Creates a HealthConnectSkinTemperature object from JSON map data. Extracts temperature baseline, delta measurements, and metadata.
Implementation
@override
HealthConnectSkinTemperature createSkinTemperature(
Map<String, dynamic> data,
) {
var errMsg =
"Error occured when extracting data for health connect skin temperature";
var startTime = converter.extractDateTimeFromEpochMs(
data["startTimeEpochMs"],
errMsg,
);
var endTime = converter.extractDateTimeFromEpochMs(
data["endTimeEpochMs"],
errMsg,
);
var startZoneOffset =
data["startZoneOffsetSeconds"] != null
? converter.extractIntValue(data["startZoneOffsetSeconds"], errMsg)
: null;
var endZoneOffset =
data["endZoneOffsetSeconds"] != null
? converter.extractIntValue(data["endZoneOffsetSeconds"], errMsg)
: null;
var metadataMap = converter.extractJsonObject(data["metadata"], errMsg);
var metadata = _extractMetaData(metadataMap, errMsg);
var skinTempDeltaList = converter.extractList(data["deltas"], errMsg);
List<SkinTemperatureDelta> skinTempDeltas = [];
for (var delta in skinTempDeltaList) {
var deltaMap = converter.extractJsonObject(delta, errMsg);
var time = converter.extractDateTime(deltaMap["time"], errMsg);
var tempDeltaData = converter.extractJsonObject(
deltaMap["delta"],
errMsg,
);
var inCelsius = converter.extractDoubleValue(
tempDeltaData["inCelsius"],
errMsg,
);
var inFahrenheit = converter.extractDoubleValue(
tempDeltaData["inFahrenheit"],
errMsg,
);
var tempDelta = TemperatureDelta(inCelsius, inFahrenheit);
var skinTempDelta = SkinTemperatureDelta(time, tempDelta);
skinTempDeltas.add(skinTempDelta);
}
var baselineData =
data["baseline"] != null
? converter.extractJsonObject(data["baseline"], errMsg)
: null;
var baseline =
baselineData != null
? Temperature(
converter.extractDoubleValue(baselineData["inCelsius"], errMsg),
converter.extractDoubleValue(
baselineData["inFahrenheit"],
errMsg,
),
)
: null;
var measurementLocation = converter.extractIntValue(
data["measurementLocation"],
errMsg,
);
return HealthConnectSkinTemperature(
baseline: baseline,
deltas: skinTempDeltas,
startTime: startTime,
endTime: endTime,
startZoneOffset: startZoneOffset,
endZoneOffset: endZoneOffset,
measurementLocation: measurementLocation,
metadata: metadata,
);
}