Files
Remever/lib/common/utils.dart
2025-03-03 20:59:42 +03:00

80 lines
2.3 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
///
/// Сервис со вспомогательными функциями
///
class Utils {
///
/// Склонение числительных
///
/// [number] Число, по которому будем склонять [int]
/// [titles] Возможные наборы данных. Должно быть 3 варианта [List<String>]
///
/// Пример:
///
/// ```dart
/// print(HelperService.declOfNum(1, ['секунда', 'секунды', 'секунд'])); // секунда
/// print(HelperService.declOfNum(2, ['секунда', 'секунды', 'секунд'])); // секунды
/// print(HelperService.declOfNum(5, ['секунда', 'секунды', 'секунд'])); // секунд
/// ```
///
static T declOfNum<T>(int number, List<T> titles) {
List<int> cases = <int>[2, 0, 1, 1, 1, 2];
return titles[(number % 100 > 4 && number % 100 < 20)
? 2
: cases[(number % 10 < 5) ? number % 10 : 5]];
}
}
typedef ValidatorFunc = String? Function(String? value);
class Validators {
///
/// Комбинирование нескольких валидаторов
/// Исполнение идет в порядке их передачи
///
static String? combine(List<ValidatorFunc> validators, String? value) {
for (ValidatorFunc vfunc in validators) {
final String? result = vfunc.call(value);
if (result != null) {
return result;
}
}
return null;
}
///
/// Метод валидации данных
///
static String? string(String? value) {
if (value == null || value.isEmpty) {
return 'Значение не может быть пустым';
}
if (value.length < 3) {
return 'Значение не может быть меньше 3 символов';
}
return null;
}
static String? email(String? email) {
if (email == null) return null;
if (email.isEmpty) return 'Поле e-mail пустое';
if (!email.contains('@')) return 'Неверный e-mail';
return null;
}
static String? phone(String? phone) {
if (phone == null) return null;
if (phone.isEmpty) return 'Введите номер телефона';
if (phone.length != 18) return 'Неверный формат номера';
return null;
}
}