runFrame<T> method

T runFrame<T>({
  1. required State captureState(),
  2. required T body(),
  3. void onCommittedChange()?,
})

Implementation

T runFrame<T>({
  required State Function() captureState,
  required T Function() body,
  void Function()? onCommittedChange,
}) {
  final wasActive = _frameActive;
  State? beforeState;
  if (!wasActive) {
    _frameActive = true;
    _didRecordUndoSnapshot = false;
    beforeState = captureState();
  }

  try {
    return body();
  } finally {
    if (!wasActive) {
      _finalizeFrame(
        beforeState as State,
        captureState: captureState,
        onCommittedChange: onCommittedChange,
      );
      _frameActive = false;
      _didRecordUndoSnapshot = false;
      _currentAction = null;
    }
  }
}