/
Ru5Kasper
/
Trackly
Обзор
Документация
Войти
/
Ru5Kasper
/
Trackly
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
frontend/lib/models/validation_model.dart
61 строка
2 KB
d4nyzz
feat: habits screen + create habit screen + user in register
28 мар 2026, 16:58
28 мар 2026, 16:58
7f27c81
Код
Авторство
О чём код?
class ValidationModel { // Валидация имени static String? validateName(String? value) { if (value == null || value.trim().isEmpty) { return 'Имя обязательно!'; } final trimmed = value.trim(); if (trimmed.length < 2) { return 'Минимум 2 символа!'; } if (trimmed.length > 50) { return 'Максимум 50 символов!'; } return null; } // Валидация email static String? validateEmail(String? value) { if (value == null || value.isEmpty) { return 'Email обязателен!'; } final emailRegex = RegExp(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'); if (!emailRegex.hasMatch(value)) { return 'Введите корректный email!'; } return null; } // Валидация пароля (минимум 8 символов, цифры) static String? validatePassword(String? value) { if (value == null || value.isEmpty) { return 'Пароль обязателен!'; } if (value.length < 8) { return 'Минимум 8 символов!'; } if (!RegExp(r'[a-z]').hasMatch(value)) { return 'Должна быть минимум 1 строчная буква (a-z)!'; } if (!RegExp(r'[A-Z]').hasMatch(value)) { return 'Должна быть минимум 1 заглавная буква (A-Z)!'; } if (!RegExp(r'\d').hasMatch(value)) { return 'Должны быть цифры!'; } return null; } // Проверка совпадения паролей static String? validatePasswordMatch( String? password, String? confirmPassword) { if (confirmPassword == null || confirmPassword.isEmpty) { return 'Подтверждение пароля обязательно!'; } if (password != confirmPassword) { return 'Пароли не совпадают!'; } return null; } }