如何修剪文本表单字段 onchange 值上的文本

faj*_*nul 3 validation flutter

我想在值更改时修剪 TextFormField 上的文本,以便用户输入名称。用户只允许输入全名,单词之间不能有多余的空格。(例如:我的名字伊斯罗梅奥)

我已经使用 TextEditingController 但仍然无法正常工作。这是我实现目标的代码片段

final myController = TextEditingController();

...

return new TextFormField(
      onChanged: (value){
        myController..text = value.trim()
          ..selection = TextSelection.collapsed(offset: myController.text.length);
      },
      controller: myController,
      keyboardType: TextInputType.phone,
      style: FormStyles.inputStyles(),
      decoration: InputDecoration(
        focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: Color(0xFFCACCCF))),
        hintText: 'hint',
        contentPadding: EdgeInsets.only(bottom: 8),
        hintStyle: FormStyles.hintStyles(),
        enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Color(0xFFCACCCF)),),
        errorStyle: FormStyles.errorStyles(),
      ),
    );

Run Code Online (Sandbox Code Playgroud)

如果我只输入空格,上面的代码工作正常,但在第一个单词后输入空格后,光标移动到第一个字符。有什么建议吗?

提前致谢!

Ami*_*ati 5

您可以使用BlacklistingTextInputFormatter来忽略输入文本RegExp

      TextFormField(
        decoration: InputDecoration(
            labelText: "Title",
        ),
        inputFormatters: [
          BlacklistingTextInputFormatter(RegExp("[ ]"))
        ],
      )
Run Code Online (Sandbox Code Playgroud)

有关更多信息,您可以参考: https: //api.flutter.dev/flutter/services/TextInputFormatter-class.html