Flutter中的TextFormField中是否有Validator


class EmailITextField extends StatelessWidget {
final String hintText;
final IconData icon;
final ValueChanged<String> onChanged;
final TextEditingController controller;
final Validator validator; //here
const EmailITextField({
Key key,
this.hintText,
this.icon = Icons.person,
this.onChanged,
this.validator,
this.controller
}) : super(key: key);
@override
Widget build(BuildContext context) {
return TextFieldContainer(
child: TextFormField(
validator: validator,
controller: controller,
onChanged: onChanged,
cursorColor: kPrimaryightColor,
decoration: InputDecoration(
icon: Icon(
icon,
color: kPrimaryColor,
),
labelText: hintText,
labelStyle: TextStyle(color: kPrimaryColor) ,
hintText: "example@email.com",
border: InputBorder.none,
),
),
);
}
}

没有Validator的东西,我想在这个可重用的小部件上添加Validator属性,但我不知道如何添加Validator特性。还有别的名字吗?

TextFormField(
// The validator receives the text that the user has entered.
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
);

如果验证器返回null,这意味着验证已通过,否则它将显示字符串为从validator方法返回的错误。额外的一点是,如果您的TextFormFieldForm中,那么当调用表单的validate()方法时,该验证器将自动调用。

点击此处查看官方文件。

EmailTextField(
validator: (String value) {
if (value.trim().isEmpty){ 
return 'Email cannot be empty.';
}
return null;
},
)

像这样,您可以创建更多if语句来验证输入值你也可以在这里引用一种方法,比如

EmailTextField(validator: _validate);

String _validate() {
if (value.trim().isEmpty){ 
return 'Email cannot be empty.';
}
return null;
}

如果有任何语法错误,请原谅我

最新更新