gpt4 book ai didi

forms - 如何防止所有表单字段在填写单个字段时进行验证

转载 作者:行者123 更新时间:2023-12-05 06:49:53 25 4
gpt4 key购买 nike


我正在设计一个表单域来创建一个用户,并且我已经为这些域设置了验证器,但是我遇到了一个问题:当我开始填写一个域时,所有的表单域都被验证,因此到处都显示错误文本 (related picture) .

有没有办法在其他字段未被触及时阻止验证?

编辑:(很抱歉从主题开始到这次编辑之间的很长时间,我有多项工作在做,而这个优先级较低)

我想我知道为什么我的自动验证不起作用...当 onChange 被触发时,它调用一个函数来检查整个表单的有效性以启用或禁用发送按钮,从而在所有领域。如果是这样,有没有办法在不触发错误消息的情况下检查有效性?

最佳答案

您可以调用 _formKey.currentState.validate() 到验证按钮 onTap 来解决这个问题。喜欢,请引用下面的代码。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appTitle = 'Form Validation Demo';

return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: MyCustomForm(),
),
);
}
}

class MyCustomForm extends StatefulWidget {
@override
MyCustomFormState createState() {
return MyCustomFormState();
}
}

class MyCustomFormState extends State<MyCustomForm> {
final _formKey = GlobalKey<FormState>();

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
height: 60.0,
child: TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
),
Container(
height: 60.0,
child: TextFormField(
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
),
Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: ElevatedButton(
onPressed: () {
if (_formKey.currentState.validate()) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Processing Data')));
}
},
child: Text('Validate'),
),
),
],
),
),
);
}
}

关于forms - 如何防止所有表单字段在填写单个字段时进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66491368/

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