open method
Implementation
Future<void> open() async {
stringCharset = stringCharset ?? Charset();
// TimeZone calTimeZone = timeZone == null ? TimeZone.UTC : timeZone;
header = DbaseFileHeader();
await header!.readHeaderWithCharset(afileReader!, stringCharset!);
buffer = LByteBuffer(header!.getRecordLength());
await fill(buffer!, afileReader!);
buffer!.flip();
currentOffset = header!.getHeaderLength();
buffer!.endian = Endian.little;
// Set up some buffers and lookups for efficiency
fieldTypes = List.filled(header!.getNumFields(), 0);
fieldLengths = List.filled(header!.getNumFields(), 0);
fieldOffsets = List.filled(header!.getNumFields(), 0);
for (var i = 0, ii = header!.getNumFields(); i < ii; i++) {
fieldTypes![i] = header!.getFieldType(i);
fieldLengths![i] = header!.getFieldLength(i);
if (i > 0) {
fieldOffsets![i] = fieldOffsets![i - 1] + header!.getFieldLength(i - 1);
} else {
fieldOffsets![i] = 0;
}
}
bytes = null; //List(header.getRecordLength() - 1);
// check if we working with a latin-1 char Charset
final cname = stringCharset!.charsetEncoding;
oneBytePerChar = 'ISO-8859-1' == cname || 'US-ASCII' == cname;
row = Row(fieldOffsets, header, readObject);
}