Я пытаюсь создать logi c для одновременного повторного использования нескольких валидаторов ввода. Вот код DartPad
void main() {
String value = 'pppppp';
print(InputValidator([InputValidator.minCharacters(value, 2),
InputValidator.maxCharacters(value, 5)
]).validate().toString());
}
class InputValidator {
final List<String> validators;
InputValidator(this.validators);
List<String> validate() {
List<String> result = [];
validators.where((s) => s != null).forEach(result.add);
return result;
}
static String maxCharacters(String value, int limit) {
if (value.length > limit) {
return 'Max $limit characters allowed';
}
return null;
}
static String minCharacters(String value, int limit) {
if (value.length < limit) {
return 'Min $limit characters required';
}
return null;
}
}
logi c отлично работает, однако я пытаюсь сделать его еще проще, когда мне не нужно передавать значение в каждый метод. Я хочу сделать параметр значения в классе InputValidator и принимать это значение при запуске метода. Проблема в том, что каждый метод имеет статус c, поэтому я не могу использовать этот параметр в методе .. Есть ли другой способ?
Вот как я хотел бы его использовать
validator: InputValidator(value, [InputValidator.minCharacters(2),
InputValidator.maxCharacters(5)
]).validate()