Flutter 是否有一种简单的方法来交叉验证颤振表单TextFormFields?
我有3个TextForm字段,用于在颤振表单白天、晚上和手机上输入电话号码 验证程序中每个TextFormField的验证:允许输入空白字符串 但是我不想保存表单,除非至少输入了一个电话号码 formKey.currentState.validate显然将验证所有单个字段是否有效 那么,在框架中是否有一种简单的方法可以交叉验证所有TextFormFields并显示错误,而不必为每个TextFormField编写单独的验证器,并包括对特定字段名的引用,我认为这是一种肮脏的攻击,例如Flutter 是否有一种简单的方法来交叉验证颤振表单TextFormFields?,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我有3个TextForm字段,用于在颤振表单白天、晚上和手机上输入电话号码 验证程序中每个TextFormField的验证:允许输入空白字符串 但是我不想保存表单,除非至少输入了一个电话号码 formKey.currentState.validate显然将验证所有单个字段是否有效 那么,在框架中是否有一种简单的方法可以交叉验证所有TextFormFields并显示错误,而不必为每个TextFormField编写单独的验证器,并包括对特定字段名的引用,我认为这是一种肮脏的攻击,例如 String
String _validatePhoneNumber(String value) {
// dirty bit - means I have to write a separate validator for each TextFormField rather than use a generic validator
if (value.isEmpty && this.eveningNumber.isEmpty && this.mobileNumber.isEmpty)
return 'At least one number must be included';
if (value.isEmpty) return null;
if (_invalidNumber(value))
return 'Enter a valid phone number';
return null;
}您应该在每个TextFormField中添加一个TextEditingController,这样您可以在提交表单时检查每个字段的值
例如:
class MyForm extends StatefulWidget {
@override
_MyFormState createState() => _MyFormState();
}
class _MyFormState extends State<MyForm> {
final _formKey = GlobalKey<FormState>();
TextEditingController first = TextEditingController();
TextEditingController second = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Form(
key: _formKey,
child: ListView(
children: <Widget> [
TextFormField(
controller: firstController
// rest of your stuff
)
// rest of your text fields using subsequent controllers
// secondController, thirdControler...
]
)
)
)
}
}
然后,每当你想检查它的值时,你只需调用firstController.text,或者更好,如果你想知道它是否为空,你只需调用firstController.text.isEmpty谢谢。正如您所知,我非常感谢您不辞辛劳地提交答案:-