createSkinTemperature method

  1. @override
HealthConnectSkinTemperature createSkinTemperature(
  1. Map<String, dynamic> data
)
override

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,
  );
}