setValueAtIndex method

void setValueAtIndex(
  1. int index,
  2. Object? value, {
  3. int? subfieldInfo,
  4. String? subfieldName,
})

Implementation

void setValueAtIndex(
  int index,
  Object? value, {
  int? subfieldInfo,
  String? subfieldName,
}) {
  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;
  }

  if (value is num) {
    if (s != 1.0 || o != 0.0) {
      // Apply inverse scale and offset
      value = (value.toDouble() + o) * s;
    }

    // Round if it's an integer type
    int baseTypeNum = type & Fit.baseTypeNumMask;
    if (Fit.baseType[baseTypeNum].isInteger) {
      value = value.round();
    }
  }

  setRawValue(index, value);
}