unstackedClone method

StackableValuePoint unstackedClone()

Copy - clone of this object unstacked. Does not allow to clone if already stacked.

Returns a new StackableValuePoint which is a full deep copy of this object. This includes cloning of double type members and ui.Offset type members.

Implementation

StackableValuePoint unstackedClone() {
  if (isStacked) {
    throw Exception('Cannot clone if already stacked');
  }

  StackableValuePoint clone = StackableValuePoint(
      xLabel: xLabel, dataY: dataY, dataRowIndex: dataRowIndex, predecessorPoint: predecessorPoint);

  // numbers and Strings, being immutable, can be just assigned.
  // rest of objects (ui.Offset) must be created from immutable leafs.
  clone.xLabel = xLabel;
  clone.dataY = dataY;
  clone.predecessorPoint = null;
  clone.dataRowIndex = dataRowIndex;
  clone.isStacked = false;
  clone.fromY = fromY;
  clone.toY = toY;
  clone.scaledX = scaledX;
  clone.scaledY = scaledY;
  clone.scaledFromY = scaledFromY;
  clone.scaledToY = scaledToY;
  clone.scaledFrom = ui.Offset(scaledFrom.dx, scaledFrom.dy);
  clone.scaledTo = ui.Offset(scaledTo.dx, scaledTo.dy);

  return clone;
}