【发布时间】:2021-10-15 00:15:10
【问题描述】:
我正在考虑在单独的 dart 文件中编写验证器,以便获得更简洁的代码。我确实写了一个新的dart文件并写了一个带有条件的字符串方法但是如何在textformfield的validator参数中初始化dart文件?
TextFormField(
textCapitalization: TextCapitalization.characters,
controller: _articleNumberController,
validator: Validators.validateName(),
decoration: InputDecoration(
prefixIcon: Icon(Icons.straighten),
labelStyle: Theme.of(context).textTheme.subhead,
labelText: 'Article Number',
contentPadding: EdgeInsets.all(15.0),
isDense: true,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(4.0),
),
),
),
这是验证器的单独类文件
class Validators {
String validateName(String value) {
String pattern = r'(^[a-zA-Z ]*$)';
RegExp regExp = new RegExp(pattern);
if (value.length == 0) {
return "Name is Required";
} else if (!regExp.hasMatch(value)) {
return "Name must be a-z and A-Z";
}
return null;
}
}
如果我尝试在 validator 中初始化为 validator: Validators.validateName(),我会收到一个错误为 The argument type 'String' can't be assigned to the parameter type 'String Function(String)'
【问题讨论】: