2026-03-27 14:05:03 +08:00
|
|
|
import '../l10n/l10n.dart';
|
|
|
|
|
|
2026-02-25 10:52:18 +08:00
|
|
|
class Validators {
|
|
|
|
|
Validators._();
|
|
|
|
|
|
2026-03-19 18:42:05 +08:00
|
|
|
static String? phone(String? value) {
|
2026-02-25 10:52:18 +08:00
|
|
|
if (value == null || value.isEmpty) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorPhoneRequired;
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
2026-03-19 18:42:05 +08:00
|
|
|
final phoneRegex = RegExp(r'^\+861[3-9]\d{9}$');
|
|
|
|
|
if (!phoneRegex.hasMatch(value)) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorPhoneInvalid86;
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static String? password(String? value) {
|
|
|
|
|
if (value == null || value.isEmpty) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorPasswordRequired;
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
|
|
|
|
if (value.length < 8) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorPasswordMin8;
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static String? required(String? value, [String? fieldName]) {
|
|
|
|
|
if (value == null || value.isEmpty) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorRequired(
|
|
|
|
|
fieldName ?? L10n.current.commonUnknown,
|
|
|
|
|
);
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static String? nickname(String? value) {
|
|
|
|
|
if (value == null || value.isEmpty) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorNicknameRequired;
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
|
|
|
|
if (value.length < 2) {
|
2026-03-27 14:05:03 +08:00
|
|
|
return L10n.current.validatorNicknameMin2;
|
2026-02-25 10:52:18 +08:00
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|