Flutter 在每 3 个数字文本字段输入后添加破折号并限制图形输入的数量

Flutter add dash after every 3 number textfield input and limit number of figure input

我正在寻找一种在 flutter textformfield 中输入每个数字后添加 ( - ) 并将输入数量限制为仅 9 位数的方法。例如 145-123-234。如果有人可以提供帮助,我将不胜感激。

us 输入格式化程序:

inputFormatters: [ FilteringTextInputFormatter.allow(RegExp('[0-9,-]')), LengthLimitingTextInputFormatter(9), ],

这可能会帮助您输入数字的数量将正常工作,并且 3 之后的破折号的正则表达式将根据您的情况而改变,您的情况可能会改变。

您可以使用 mask text formatter package 示例用法:

 var maskFormatter = new MaskTextInputFormatter(
      mask: '+# (###) ###-##-##', filter: {"#": RegExp(r'[0-9]')});
      
   TextField(
                      inputFormatters: [ maskFormatter],
                      autoFocus: false,
                      inputType: TextInputType.phone,
                      inputAction: TextInputAction.done,
                      },
                    ),

所以我安装了这个flutter_masked_text

并将库导入我的输入页面,将我的 TextFormField 控制器更改为 MaskedTextController _controllerCode = MaskedTextController(mask: '000-000-000'); 然后在 TextFormField 中将 _controllerCode 解析为 controller 最后我的 Widget 如下所示:

  MaskedTextController _controller = MaskedTextController(mask: '000-000-000');

  @override
  Widget build(BuildContext context) {
    return TextField(
      controller: _controller,
      decoration: InputDecoration(
        hintText: 'e.g. 101-234-190',
      ),
    );
  }
}```