[Flutter] TextField 中只允许输入合法的小数

本文介绍了一个自定义的Flutter TextInputFormatter组件,该组件能够确保TextField仅接收有效的小数输入,并保持光标位置正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

的Flutter的TextField中,我们可以通过设置inputFormatters来过滤和限制输入的内容。

下面是一个自定义的 TextInputFormatter,可以限制用户只能输入有效的整数和小数。

 

// 只允许输入小数
class _UsNumberTextInputFormatter extends TextInputFormatter {
  static const defaultDouble = 0.001;
  static double strToFloat(String str, [double defaultValue = defaultDouble]) {
    try {
      return double.parse(str);
    } catch (e) {
      return defaultValue;
    }
  }

  @override
  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
    String value = newValue.text;
    int selectionIndex = newValue.selection.end;
    if (value == ".") {
      value = "0.";
      selectionIndex++;
    } else if (value != "" && value != defaultDouble.toString() && strToFloat(value, defaultDouble) == defaultDouble) {
      value = oldValue.text;
      selectionIndex = oldValue.selection.end;
    }
    return new TextEditingValue(
      text: value,
      selection: new TextSelection.collapsed(offset: selectionIndex),
    );
  }
}

 

转载于:https://www.cnblogs.com/yangyxd/p/9639588.html

Flutter是一款功能强大的移动开发框架,支持在移动端构建高性能、美观的应用程序。在Flutter中,TextField是一个常用的控件,可以让用户输入单行或多行文本。 与单行文本输入不同的是,多行文本的输入需要支持换行,这对于一些需要输入较长文本的应用场景非常重要。FlutterTextField组件允许用户进行多行文本的输入,并且默认支持自动换行。 在Flutter中,设置一个TextField控件支持多行文本输入很简单,只需要设置其maxLines属性即可。maxLines可以设置为任意大于1的整数值,表示该TextField支持的最大行数。当用户输入的文本超过指定的最大行数时,TextField会自动换行。 例如,以下是一个简单的Flutter多行文本输入的示例代码: ``` TextField( maxLines: 5, ) ``` 上述代码创建了一个最大行数为5的TextField控件,用户可以在该控件中输入多行文本,并且当超过5行时自动换行。需要注意的是,在设置maxLines属性时,建议根据实际情况进行调整,例如对于一些输入较长文本的应用场景,可以将maxLines设置为较大的值,以方便用户进行输入。 在多行文本输入完成后,可以通过对TextField输入框内的文本进行获取来进一步处理用户输入的文字内容。 综上所述,FlutterTextField控件提供了非常方便的多行文本输入功能,并且可以自动换行,使得用户输入更加便捷和高效。因此,Flutter是一款非常适合移动端应用开发开发框架。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值