processEvent method

void processEvent(
  1. TDataEvent event,
  2. dynamic info
)

Implementation

void processEvent(TDataEvent event, dynamic info) {
  const onDataChangeEvents = {
    TDataEvent.deRecordChange,
    TDataEvent.deDataSetChange,
    TDataEvent.deDataSetScroll,
    TDataEvent.deLayoutChange,
    TDataEvent.deUpdateState,
  };

  bool needDataChange;
  // Special UpdateState handling. (original comment kept as-is)
  if (event == TDataEvent.deUpdateState) {
    needDataChange = _state == TDataSetState.dsInactive;
    final lastState = _state;
    if (_dataSet != null) {
      _state = _dataSet!.state;
    } else {
      _state = TDataSetState.dsInactive;
    }
    // Don't do events if nothing changed. (original comment kept as-is)
    if (_state == lastState) return;
  } else {
    needDataChange = true;
  }
  if (event != TDataEvent.deUpdateState &&
      _state == TDataSetState.dsInactive) {
    return;
  }
  distributeEvent(event, info);
  // Extra handlers (original comment kept as-is)
  if (!componentState.contains(TComponentStateItem.csDestroying)) {
    if (event == TDataEvent.deUpdateState) {
      doStateChange();
    }
    if (onDataChangeEvents.contains(event) && needDataChange) {
      doDataChange(null);
    }
    if (event == TDataEvent.deFieldChange) {
      doDataChange(info is TField ? info : null);
    }
    if (event == TDataEvent.deUpdateRecord) {
      doUpdateData();
    }
  }
}