作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在制作一个将被多次使用的自定义 TextFormField 小部件。如何在不验证同一列表/行/列中的任何其他 TextFormField 的情况下验证单个 TextFormField。
Widget timeTextField (TextEditingController controller){
return TextFormField(
controller: controller,
validator: (String userInput){
if(userInput.isEmpty){return 'Need to input time';}
},
onFieldSubmitted: (String userInput){
setState(() {
debugPrint(userInput);
controller.text = "amout";
debugPrint(controller.text);
});
},
);
}
它会在用户按下键盘上的提交时进行验证,如果 TextFormField 为空,它只会向用户按下提交的那个 TextFormField 发送验证错误。
最佳答案
TextField
中的验证基于它们所在的Form
(而不是Column
或Row
或 List
)。要分别验证 TextFields,请将它们放在不同的表单中,分配不同的键并分别调用 _formKey.currentState.validate
。
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
final GlobalKey<FormState> _form1Key = GlobalKey();
final GlobalKey<FormState> _form2Key = GlobalKey();
final GlobalKey<FormState> _form3Key = GlobalKey();
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Form(
key: _form1Key,
child: TextFormField(
validator: (value) {
if (value.isEmpty) return "Cannot be empty";
},
),
),
Form(
key: _form2Key,
child: TextFormField(
validator: (value) {
if (value.isEmpty) return "Cannot be empty";
},
),
),
Form(
key: _form3Key,
child: TextFormField(
validator: (value) {
if (value.isEmpty) return "Cannot be empty";
},
),
),
],
),
floatingActionButton: FloatingActionButton(onPressed: () {
_form2Key.currentState.validate();
}),
);
}
}
关于flutter - 如何使用 onFieldSubmitted 单独验证 TextFormField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56571864/
我正在制作一个将被多次使用的自定义 TextFormField 小部件。如何在不验证同一列表/行/列中的任何其他 TextFormField 的情况下验证单个 TextFormField。 Widge
我是一名优秀的程序员,十分优秀!