backspace method

  1. @override
DartBlockValueTreeAlgebraicNode? backspace()
override

Receive a delete (backspace) request, which should delete the right-most component (digit of a constant, variable, operator).

Implementation

@override
DartBlockValueTreeAlgebraicNode? backspace() {
  var valueString = value.toString();
  if (hasPendingDot) {
    hasPendingDot = false;
  } else if (valueString.length > 1) {
    valueString = valueString.substring(0, valueString.length - 1);
    if (valueString.endsWith(".")) {
      hasPendingDot = true;
      if (valueString.length > 1) {
        valueString = valueString.substring(0, valueString.length - 1);
      } else {
        valueString = "";
      }
    } else {
      /// unnecessary?
      hasPendingDot = false;
    }
  } else {
    valueString = "";
  }
  if (valueString.isNotEmpty) {
    value = num.parse(valueString);

    return this;
  } else {
    return parent?.replaceChild(this, null);
  }
}