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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/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 是否有一种简单的方法来交叉验证颤振表单TextFormFields?_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter 是否有一种简单的方法来交叉验证颤振表单TextFormFields?

Flutter 是否有一种简单的方法来交叉验证颤振表单TextFormFields?,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我有3个TextForm字段,用于在颤振表单白天、晚上和手机上输入电话号码 验证程序中每个TextFormField的验证:允许输入空白字符串 但是我不想保存表单,除非至少输入了一个电话号码 formKey.currentState.validate显然将验证所有单个字段是否有效 那么,在框架中是否有一种简单的方法可以交叉验证所有TextFormFields并显示错误,而不必为每个TextFormField编写单独的验证器,并包括对特定字段名的引用,我认为这是一种肮脏的攻击,例如 String

我有3个TextForm字段,用于在颤振表单白天、晚上和手机上输入电话号码

验证程序中每个TextFormField的验证:允许输入空白字符串

但是我不想保存表单,除非至少输入了一个电话号码

formKey.currentState.validate显然将验证所有单个字段是否有效

那么,在框架中是否有一种简单的方法可以交叉验证所有TextFormFields并显示错误,而不必为每个TextFormField编写单独的验证器,并包括对特定字段名的引用,我认为这是一种肮脏的攻击,例如

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

谢谢。正如您所知,我非常感谢您不辞辛劳地提交答案:-