/// Константы приложения class AppConstants { // Размеры static const double defaultPadding = 16.0; static const double smallPadding = 8.0; static const double largePadding = 24.0; static const double extraLargePadding = 32.0; // Радиусы static const double defaultBorderRadius = 8.0; static const double smallBorderRadius = 4.0; static const double largeBorderRadius = 16.0; // Высоты static const double defaultButtonHeight = 48.0; static const double smallButtonHeight = 36.0; static const double largeButtonHeight = 56.0; // Ширины static const double maxContentWidth = 400.0; static const double minContentWidth = 280.0; // Анимации static const Duration defaultAnimationDuration = Duration(milliseconds: 300); static const Duration fastAnimationDuration = Duration(milliseconds: 150); static const Duration slowAnimationDuration = Duration(milliseconds: 500); // Таймауты static const Duration defaultTimeout = Duration(seconds: 30); static const Duration shortTimeout = Duration(seconds: 10); static const Duration longTimeout = Duration(minutes: 2); // Лимиты static const int maxImageSize = 5 * 1024 * 1024; // 5MB static const int maxVideoSize = 100 * 1024 * 1024; // 100MB static const int maxTextLength = 1000; static const int maxTitleLength = 100; static const int maxDescriptionLength = 500; // Пагинация static const int defaultPageSize = 20; static const int smallPageSize = 10; static const int largePageSize = 50; // Форматы static const List supportedImageFormats = ['jpg', 'jpeg', 'png', 'webp']; static const List supportedVideoFormats = ['mp4', 'mov', 'avi']; // Регулярные выражения static const String emailRegex = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'; static const String phoneRegex = r'^\+?[1-9]\d{1,14}$'; static const String urlRegex = r'^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$'; // Сообщения static const String defaultErrorMessage = 'Произошла ошибка. Попробуйте еще раз.'; static const String networkErrorMessage = 'Проблема с подключением к интернету.'; static const String timeoutErrorMessage = 'Превышено время ожидания.'; static const String unknownErrorMessage = 'Неизвестная ошибка.'; // Ключи для SharedPreferences static const String welcomeScreenShownKey = 'welcomeScreenWasShowed'; static const String userTokenKey = 'userToken'; static const String userDataKey = 'userData'; static const String settingsKey = 'settings'; // API endpoints static const String apiVersion = '/api'; static const String authEndpoint = '/auth'; static const String usersEndpoint = '/users'; static const String postsEndpoint = '/posts'; static const String commentsEndpoint = '/comments'; // Delay of pending requests /// 30 секунд стоит потому что запрос может идти 12-15 секунд /// Особенно если производится отладка на сервере разработчика static const Duration pendingDelay = Duration(seconds: 30); }