我在里面有表单和textformfield:
new Expanded(
child: TextFormField(
style: new TextStyle(color: Colors.white),
keyboardType: TextInputType.text,
validator: (String value) {
if (value.length <= 5) {
//Show error as a Snackbar
}
},
onSaved: (String value) {},
),
)
在按钮上,我正在检查所有字段是否有效:
if (_formKey.currentState.validate()) {
_submit();
}
现在的问题是,当您调用
validate()
并且在validate()
方法中不返回任何文本时,它将认为它返回了真。我不想在文本字段下面显示错误,而是将其作为一个障碍。
另外,我尝试在每个验证器方法中设置一个额外的标志和设置,但是如果表单中有多个字段,它就会变得复杂。
有人能告诉我如何处理
_formKey.currentState.validate()
应该返回false和validator方法的这种情况吗?在textformfield中不需要返回错误文本。
最佳答案
如果不想在textfield中显示错误,则不应该是用户窗体小部件和textformfield。
您应该由控制器进行验证
例如
class MyHomePage extends StatefulWidget {
@override
MyHomePageState createState() {
return new MyHomePageState();
}
}
class MyHomePageState extends State<MyHomePage> {
final _text = TextEditingController();
bool _validate = false;
@override
void dispose() {
_text.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('TextField Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Error Showed if Field is Empty on Submit button Pressed'),
TextField(
controller: _text,
decoration: InputDecoration(
labelText: 'Enter the Value',
),
),
RaisedButton(
onPressed: () {
if(_text.text.length<=5){
// open dialog
}
},
child: Text('Submit'),
textColor: Colors.white,
color: Colors.blueAccent,
)
],
),
),
);
}
}
关于flutter - 自定义验证TextFormField Flutter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55282476/