flutter - 文本分隔符上的千位分隔符不带小数点分隔符

标签 flutter dart textfield

我正在使用flutter_masked_text来格式化我的 Controller ,以便自动在我的货币字段中添加千位分隔符。我正在使用它来实现这一目标。

var controller = new MoneyMaskedTextController(decimalSeparator: '.', thousandSeparator: ',');

我不喜欢它的工作方式,因为它从0.00开始,并自动开始从小数部分开始添加数字。如果我键入1000,它应该变成1,000而不是1,000.00。有没有一种方法可以格式化 Controller 字段以添加不带小数点分隔符的千位分隔符?

最佳答案

我使用自定义文本输入格式化程序来执行以下操作:

class CustomTextInputFormatter extends TextInputFormatter {
  @override
  TextEditingValue formatEditUpdate(
      TextEditingValue oldValue, TextEditingValue newValue) {
    if (newValue.text.length == 0) {
      return newValue.copyWith(text: '');
    } else if (newValue.text.compareTo(oldValue.text) != 0) {
      int selectionIndexFromTheRight =
          newValue.text.length - newValue.selection.extentOffset;
      List<String> chars = newValue.text.replaceAll(' ', '').split('');
      String newString = '';
      for (int i = 0; i < chars.length; i++) {
        if (i % 3 == 0 && i != 0) newString += ' ';
        newString += chars[i];
      }

      return TextEditingValue(
        text: newString,
        selection: TextSelection.collapsed(
          offset: newString.length - selectionIndexFromTheRight,
        ),
      );
    } else {
      return newValue;
    }
  }
}

然后在您的TextField上:
TextField(
   controller: _textController,
   keyboardType: TextInputType.number,
   inputFormatters: [CustomTextInputFormatter()],
)

关于flutter - 文本分隔符上的千位分隔符不带小数点分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61866207/

相关文章:

ios - 如何在 Swift 中单击 TextField 外部时隐藏 TextField 中的 TEXT?

flutter - HTTP 异常 : Connection closed before full header was received

firebase - 向 firestore 中的特定用户 uid 发送通知

android - 当手指移动时,捏合缩放会被清除

flutter - Flutter中传入的约束是什么意思?

objective-c - 触发事件的全局监视器后,如何在聚焦的 NSTextfield(在我的应用程序之外)上写入?

Flutter Messaging App - 禁用图标按钮

image - flutter : Convert jpg to webp

flutter - 我听不懂这条线

iphone - 键盘打开时在 ScrollView 中滚动(就像在 Notes 应用程序 iOS 中一样)