backspace method

void backspace()

Implementation

void backspace() {
  int index = focusNodes.indexWhere((node) => node.hasFocus);

  if (index == -1) {
    index = controllers
        .lastIndexWhere((controller) => controller.text.isNotEmpty);

    if (index == -1) return;

    focusNodes[index].requestFocus();
    Future<void>.microtask(() {
      controllers[index].clear();
    });
  } else if (controllers[index].text.isNotEmpty) {
    controllers[index].clear();
  } else if (index > 0) {
    focusNodes[index - 1].requestFocus();
    Future<void>.microtask(() {
      controllers[index - 1].clear();
    });
  }

  final inputValue = controllers.map((c) => c.text).join();

  if (widget.onChanged != null) {
    widget.onChanged!(inputValue);
  }

  allFilled = controllers.every((c) => c.text.isNotEmpty);
  if (mounted && !allFilled) setState(() {});
}