inputNumCheck static method

InputStatus inputNumCheck(
  1. TextEditingController controller,
  2. String inputValue, {
  3. dynamic maxInput,
  4. bool enableInputDecimal = true,
  5. int maxLengthInteger = 5,
  6. int maxLengthDecimal = 3,
})

处理输入数字的校验

Implementation

static InputStatus inputNumCheck(TextEditingController controller, String inputValue,
    {dynamic maxInput, bool enableInputDecimal = true, int maxLengthInteger = 5, int maxLengthDecimal = 3}) {
  if (inputValue == '.') {
    if (enableInputDecimal && controller.text.isNotEmpty && !controller.text.contains('.')) {
      controller.text = "${controller.text}.";
      controller.selection = TextSelection.fromPosition(TextPosition(offset: controller.text.length));
      return InputStatus.SUCCESS;
    }
    return InputStatus.FAILURE;
  }

  if (inputValue == '0' && controller.text == '0') {
    return InputStatus.FAILURE;
  }

  String oldText = controller.text;
  String newText = (controller.text == '0' && inputValue != '.') ? "$inputValue" : "$oldText$inputValue";
  if (maxInput != null && NP.minus(newText, maxInput) > 0) {
    return InputStatus.INPUTOUTMAX;
  }

  List<String> splitList = newText.split('.');
  if (splitList[0].length > maxLengthInteger) {
    return InputStatus.FAILURE;
  }

  if (splitList.length > 1 && splitList[1].length > maxLengthDecimal) {
    return InputStatus.FAILURE;
  }

  controller.text = newText;
  controller.selection = TextSelection.fromPosition(TextPosition(offset: controller.text.length));
  return InputStatus.SUCCESS;
}