validator.dart 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /*
  2. * @Author: XianKaiQun
  3. * @Date: 2020-09-07 15:10:33
  4. * @LastEditors: ChenYaJin
  5. * @LastEditTime: 2023-05-26 14:55:20
  6. * @Description:
  7. */
  8. ///多项验证器
  9. ///```dart
  10. ///WMultiFormValidatorUtil([
  11. /// WValidatorUtil(),
  12. /// WValidatorUtil(),
  13. /// WValidatorUtil(),
  14. /// ...
  15. ///]).validator(value);
  16. ///
  17. ///```
  18. class WMultiValidatorUtil {
  19. final List<WValidatorUtil> validators;
  20. WMultiValidatorUtil(this.validators);
  21. String? validate(String value) {
  22. String? errorText;
  23. for (var item in validators) {
  24. errorText = item.validate(value);
  25. if (errorText != null) {
  26. break;
  27. }
  28. }
  29. return errorText;
  30. }
  31. }
  32. ///单项验证器
  33. ///```dart
  34. /// WValidatorUtil().validator(value)
  35. ///```
  36. class WValidatorUtil {
  37. final String? Function(dynamic value) validate;
  38. WValidatorUtil(String? Function(dynamic value) validator)
  39. : validate = validator;
  40. ///验证手机号
  41. static WValidatorUtil isPhoneNumber([String errorText = '请输入正确手机号']) {
  42. return WValidatorUtil((dynamic value) {
  43. final regExp = RegExp(r"1[3456789]\d{9}$");
  44. final boolean = regExp.hasMatch(value ?? '');
  45. return boolean ? null : errorText;
  46. });
  47. }
  48. ///验证必须存在
  49. static WValidatorUtil isRequired([String errorText = '此项不可为空']) {
  50. return WValidatorUtil((dynamic value) {
  51. final list = [null, [], ''];
  52. final has = list.indexOf(value) != -1;
  53. return has ? errorText : null;
  54. });
  55. }
  56. ///验证最大范围
  57. static WValidatorUtil isOutOfRange(
  58. [String errorText = '此项超出范围', int? maxSize]) {
  59. return WValidatorUtil((dynamic value) {
  60. final boolean = value < maxSize;
  61. return boolean ? null : errorText;
  62. });
  63. }
  64. }