getValue method
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;
}
final Object? value = values[index];
if (value == null) return null;
final int baseTypeNum = type & Fit.baseTypeNumMask;
if (baseTypeNum == Fit.string) {
if (value is List<int>) {
// Remove null terminator if present
int len = value.length;
if (len > 0 && value[len - 1] == 0) {
len--;
}
return utf8.decode(value.sublist(0, len));
}
return value.toString();
}
if (isNumeric()) {
final 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;
}