flutter 为什么当我在输入格式的TextFormField中键入“-”或““两次时,整个文本都消失了?

v7pvogib  于 2023-11-21  发布在  Flutter
关注(0)|答案(1)|浏览(162)

我认为这个问题的主要原因是过滤文本输入格式中的正则表达式。但我不知道为什么和如何解决它.

TextFormField(
  maxLength: 12,
  buildCounter: (
    BuildContext context, {
    required int currentLength,
    required bool isFocused,
    required int? maxLength,
  }) {
    return null;
  },
  cursorColor: Colors.black,
  decoration: InputDecoration(
    labelText: 'Just Put numbers',
    labelStyle: TextStyle(color: Colors.black),
    focusedBorder: OutlineInputBorder(
      borderSide: BorderSide(
        color: Colors.black,
      ),
    ),
  ),
  inputFormatters: [
    FilteringTextInputFormatter.allow(RegExp(r'^[0-9\s-]+$')),
  ],
)

字符串
我使用这段代码是因为我需要用一个数字模式来填充TextFormField,比如“xxx-xxxx-xxxx”,而不仅仅是任何文本。
FilteringTextInputFormatter.allow(RegExp(r'^[0-9\s-]+$')),

z9gpfhce

z9gpfhce1#

这可能是由iOS上的system shortcuts引起的。默认情况下

  • 双空格``将被点.替换
  • 双连字符--将替换为单个长破折号

因此,正则表达式将不再匹配。并且FilteringTextInputFormatter将用其replacementString替换所有内容,默认情况下,replacementString是空字符串。

相关问题