我有几个TextFormFields的验证器,但是我在同一个类中编写验证器我可以检索它但是如果在单独的类中写入我只是无法初始化它,因为它没有显示它。
我现在做的事情:
class _RegistrationPageState extends State<RegistrationPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: LightColors.kAqua,
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.only(top: 32.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
TextFormField(
validator: validateEmail,
controller: emailController,
onChanged: (val){
setState(() => email = val);
},
decoration: InputDecoration(
prefixIcon: Icon(Icons.email),
hintText: "Email",
hintStyle: TextStyle(color: Colors.grey),
border: InputBorder.none),
),
]
)
)
)
);
}
String validateEmail(String value){
String pattern = r'(^[a-z,A-Z ]*$)';
RegExp regExp = new RegExp(pattern);
if (!regExp.hasMatch(value)) {
return "Name must be a-z and A-Z";
}
return null;
}
}
通过使用它,我可以在验证器字段中获取validateEmail,但如果我只是在单独的类中编写相同的validateEmail,我将无法获取它。
class Validators {
String validateEmail(String value){
String pattern = r'(^[a-z,A-Z ]*$)';
RegExp regExp = new RegExp(pattern);
if (!regExp.hasMatch(value)) {
return "Name must be a-z and A-Z";
}
return null;
}
}