Flutter 简单的TextFormField验证程序,但不返回任何内容
我有一个关于如何使用验证器的问题。我看不出哪里弄错了。我编写的代码是,当单击一个按钮时,它会弹出一个对话框,要求用户输入一个名称Flutter 简单的TextFormField验证程序,但不返回任何内容,flutter,Flutter,我有一个关于如何使用验证器的问题。我看不出哪里弄错了。我编写的代码是,当单击一个按钮时,它会弹出一个对话框,要求用户输入一个名称 final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); FlatButton( onPressed: () { showDialog( context: context, builder: (_) => Dialog(
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
FlatButton(
onPressed: () {
showDialog(
context: context,
builder: (_) => Dialog(
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
key: _formKey,
controller: roomController,
validator: (String value) {
if (value.isEmpty) {
return 'Please create name';
} else if (NameList.contains(value)) {
return 'Existed';
}
return null;
},
),
RaisedButton(
onPressed: () {},
child: Text('Create'),
),
],
),
),
),
);
},
child: Text('Create'),
),
final GlobalKey _formKey=GlobalKey();
扁平按钮(
已按下:(){
显示对话框(
上下文:上下文,
生成器:()=>对话框(
孩子:表格(
键:_formKey,
子:列(
儿童:[
TextFormField(
键:_formKey,
控制员:房间控制员,
验证器:(字符串值){
if(value.isEmpty){
返回“请创建名称”;
}else if(NameList.contains(value)){
返回“已存在”;
}
返回null;
},
),
升起的按钮(
按下:(){},
子项:文本('Create'),
),
],
),
),
),
);
},
子项:文本('Create'),
),
这些代码工作正常,除了验证器部分,我想做的都做了。
我错过什么了吗
谢谢。为了使验证生效,您有两个选择,您的代码是正确的,因为您没有触发验证:
autovalidate:true
参数设置为Form
(1.19之后不推荐使用)。现在,您需要使用AutovalidateMode
,并且您有一些选项,如onUserInteraction
和始终
和禁用
。Yu可以查看更多信息如果用户单击按钮时需要验证,则可以使用第一个按钮,第二个按钮是动态的,具体取决于您传递给“``Form``的参数。您应该像下面这样在onPress按钮中检查验证
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
FlatButton(
onPressed: () {
showDialog(
context: context,
builder: (_) => Dialog(
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
key: _formKey,
controller: roomController,
validator: (String value) {
if (value.isEmpty) {
return 'Please create name';
} else if (NameList.contains(value)) {
return 'Existed';
}
return null;
},
),
RaisedButton(
onPressed: () {
if(_formKey.currentState.validate()){
return //someting
}
},
child: Text('Create'),
),
],
),
),
),
);
},
child: Text('Create'),
),
final GlobalKey _formKey=GlobalKey();
扁平按钮(
已按下:(){
显示对话框(
上下文:上下文,
生成器:()=>对话框(
孩子:表格(
键:_formKey,
子:列(
儿童:[
TextFormField(
键:_formKey,
控制员:房间控制员,
验证器:(字符串值){
if(value.isEmpty){
返回“请创建名称”;
}else if(NameList.contains(value)){
返回“已存在”;
}
返回null;
},
),
升起的按钮(
已按下:(){
if(_formKey.currentState.validate()){
返回//someting
}
},
子项:文本('Create'),
),
],
),
),
),
);
},
子项:文本('Create'),
),
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
FlatButton(
onPressed: () {
showDialog(
context: context,
builder: (_) => Dialog(
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
key: _formKey,
controller: roomController,
validator: (String value) {
if (value.isEmpty) {
return 'Please create name';
} else if (NameList.contains(value)) {
return 'Existed';
}
return null;
},
),
RaisedButton(
onPressed: () {
if(_formKey.currentState.validate()){
return //someting
}
},
child: Text('Create'),
),
],
),
),
),
);
},
child: Text('Create'),
),