getValue method

Object? getValue(
  1. int index, {
  2. int? subfieldInfo,
  3. String? subfieldName,
})

Implementation

Object? getValue(int index, {int? subfieldInfo, String? subfieldName}) {
  if (index >= values.length || index < 0) {
    return null;
  }

  Subfield? subfield;
  if (subfieldInfo != null) {
    subfield = getSubfieldByIndex(subfieldInfo);
  } else if (subfieldName != null) {
    subfield = getSubfieldByName(subfieldName);
  }

  double s, o;
  if (subfield == null) {
    s = scale;
    o = offset;
  } else {
    s = subfield.scale;
    o = subfield.offset;
  }

  Object? value = values[index];
  if (value == null) return null;

  if (isNumeric()) {
    int baseTypeNum = type & Fit.baseTypeNumMask;
    var invalid = Fit.baseType[baseTypeNum].invalidValue;
    if (value == invalid) {
      return null;
    }
    if (value is num && (s != 1.0 || o != 0.0)) {
      return (value.toDouble() / s) - o;
    }
  }

  return value;
}