internalPost method
void
internalPost(
)
override
Implementation
@override
void internalPost() {
super.internalPost(); // CheckRequiredFields
final rec = activeBuffer();
if (rec == null) return;
if (state == TDataSetState.dsInsert) {
// Insertion point: at the current cursor position (a minimal analogue of bookmark semantics)
var at = _cursorIndex + 1;
if (rec.bookmarkFlag == TBookmarkFlag.bfEOF || at > _records.length) {
at = _records.length;
}
if (at < 0) at = 0;
final stored = TRecordBuffer()..fieldData.addAll(rec.fieldData);
_records.insert(at, stored);
_cursorIndex = at;
_pendingUpdates
.add(_PendingUpdate(TUpdateKind.ukInsert, {}, Map.of(rec.fieldData)));
} else {
if (_cursorIndex >= 0 && _cursorIndex < _records.length) {
_records[_cursorIndex].fieldData
..clear()
..addAll(rec.fieldData);
}
_pendingUpdates.add(_PendingUpdate(TUpdateKind.ukModify,
Map.of(_oldValueBuffer?.fieldData ?? {}), Map.of(rec.fieldData)));
}
_changeCount = _pendingUpdates.length;
_oldValueBuffer = null;
}