first commit
This commit is contained in:
79
lib/common/utils.dart
Normal file
79
lib/common/utils.dart
Normal file
@@ -0,0 +1,79 @@
|
||||
///
|
||||
/// Сервис со вспомогательными функциями
|
||||
///
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user