Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振与振动;Textfield:如何通过自动删除Textfield中的空间来限制用户使用该空间?_Flutter_Dart_Textfield_Onchange_Textformfield - Fatal编程技术网

Flutter 颤振与振动;Textfield:如何通过自动删除Textfield中的空间来限制用户使用该空间?

Flutter 颤振与振动;Textfield:如何通过自动删除Textfield中的空间来限制用户使用该空间?,flutter,dart,textfield,onchange,textformfield,Flutter,Dart,Textfield,Onchange,Textformfield,如何通过在用户完成键入时自动删除该空格来限制用户使用textfield中的空格 例如,如果用户键入KingofLight,则在他/她离开文本字段后,它将作为KingofLight应用 TextFormField( initialValue: nickname != null ? nickname : current_user.

如何通过在用户完成键入时自动删除该空格来限制用户使用textfield中的空格

例如,如果用户键入
KingofLight
,则在他/她离开文本字段后,它将作为
KingofLight
应用

TextFormField(
                          initialValue: nickname != null
                              ? nickname
                              : current_user.nickname,
                          decoration: InputDecoration(
                            border: new OutlineInputBorder(
                              borderSide: new BorderSide(color: Colors.grey),
                              borderRadius: BorderRadius.circular(6),
                            ),
                            focusedBorder: OutlineInputBorder(
                              borderSide:
                                  BorderSide(color: Colors.grey, width: 1.0),
                              borderRadius: BorderRadius.circular(6),
                            ),
                            enabledBorder: OutlineInputBorder(
                              borderSide:
                                  BorderSide(color: Colors.grey, width: 1.0),
                              borderRadius: BorderRadius.circular(6),
                            ),
                            hintText: 'Empty',
                            hintStyle: TextStyle(
                              color: Colors.grey[400],
                              fontSize: 20,
                              //fontWeight: FontWeight.bold,
                            ),
                          ),
                          style: TextStyle(
                            fontSize: 20,
                            // fontWeight: FontWeight.bold,
                          ),
                          validator: (val) => val.length < 2
                              ? 'Enter a nickname 2+char long'
                              : null,
                          onChanged: (val) {
                            val = val.replaceAll(' ', '');
                            setState(() => nickname = val);
                          },
                        ),
TextFormField(
initialValue:昵称!=null
昵称
:当前用户昵称,
装饰:输入装饰(
边框:新大纲输入边框(
borderSide:新的borderSide(颜色:Colors.grey),
边界半径:边界半径。圆形(6),
),
聚焦顺序:大纲输入边框(
边界:
边界边(颜色:颜色。灰色,宽度:1.0),
边界半径:边界半径。圆形(6),
),
enabledBorder:OutlineInputBorder(
边界:
边界边(颜色:颜色。灰色,宽度:1.0),
边界半径:边界半径。圆形(6),
),
hintText:'空',
hintStyle:TextStyle(
颜色:颜色。灰色[400],
尺寸:20,
//fontWeight:fontWeight.bold,
),
),
样式:TextStyle(
尺寸:20,
//fontWeight:fontWeight.bold,
),
验证程序:(val)=>val.length<2
?输入昵称2+字符长'
:null,
一旦更改:(val){
val=val.replaceAll(“”,”);
设置状态(()=>昵称=val);
},
),

请帮帮我!谢谢大家!

一种方法是使用
textededitingcontroller
这样做,并且可以根据您的用例调用
format昵称()

class _MyWidgetState extends State<MyWidget>{
  
  FocusNode node = new FocusNode();
  TextEditingController tc = TextEditingController();
  
  @override
  void initState(){
    node.addListener((){
      if(!node.hasFocus){
        formatNickname();
      }
    });
    super.initState();
  }
  
  void formatNickname(){
    tc.text = tc.text.replaceAll(" ", "");
  }
  
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        TextFormField(
          focusNode: node,
          controller: tc,
        ),
        TextFormField(),
        RaisedButton(
          child: Text('Format'),
          onPressed: (){
            formatNickname();
          },
        ),
      ],
    );
  }
}
class\u MyWidgetState扩展状态{
FocusNode节点=新的FocusNode();
TextEditingController tc=TextEditingController();
@凌驾
void initState(){
node.addListener((){
如果(!node.hasFocus){
格式化昵称();
}
});
super.initState();
}
无效格式昵称(){
tc.text=tc.text.replaceAll(“,”);
}
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
TextFormField(
focusNode:node,
控制员:tc,,
),
TextFormField(),
升起的按钮(
子项:文本('格式'),
已按下:(){
格式化昵称();
},
),
],
);
}
}

请参见
TextInputFormatter