gpt4 book ai didi

flutter - 有没有一种简单的方法来交叉验证 Flutter Form TextFormFields?

转载 作者:IT王子 更新时间:2023-10-29 07:16:54 24 4
gpt4 key购买 nike

我有 3 TextFormField用于在 Flutter 上输入电话号码的 s Form (白天、晚上和移动)。

每个 TextFormField 的验证(在 validator: 中)允许输入空白字符串。

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

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>/p>

关于flutter - 有没有一种简单的方法来交叉验证 Flutter Form TextFormFields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57095583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com