Flutter Client / Presentation
Экраны приложения
Каталог UI экранов клиента Chepuhagram. Папка: lib/presentation/screens/
Иерархия экранов и зависимостей
Каждый экран разработан как StatefulWidget или StatelessWidget, потребляющий состояние провайдеров через метод context.watch<Provider>() или context.read<Provider>().
| Экран (Файл) | Класс | Зависимости от Provider | Назначение |
|---|---|---|---|
splash_screen.dart | SplashScreen | AuthProvider | Начальная инициализация, проверка JWT, проверка FaceID, перенаправление. |
login_screen.dart | LoginScreen | AuthProvider | Форма входа по логину/паролю и ввода 2FA TOTP токена. |
account_setup_screen.dart | AccountSetupScreen | AuthProvider, CryptoService | Генерация ключей X25519, установка имени и мастер-пароля. |
key_recovery_screen.dart | KeyRecoveryScreen | AuthProvider, CryptoService | Импорт приватного E2EE ключа из облака с вводом мастер-пароля. |
chats_screen.dart | ChatsScreen | ContactProvider, AuthProvider | Главное меню. Список активных переписок с аватарами, непрочитанными пушами и поиском. |
chat_screen.dart | ChatScreen | ContactProvider, AuthProvider | Интерфейс чата с собеседником. Отрендерен через CustomScrollView. |
call_screen.dart | CallScreen | WebRTCService, ContactProvider | Экран активного вызова. Интегрирован с WebRTC видео рендерерами. |
camera_screen.dart | CameraScreen | — | Съемка медиафайлов через плагин camera с нативным сжатием. |
settings_screen.dart | SettingsScreen | AuthProvider | Панель изменения профиля пользователя (имя, о себе, телефон, почта, аватар). |
security_settings_screen.dart | SecuritySettingsScreen | AuthProvider | Настройка смены паролей, включения/выключения TOTP 2FA и биометрии. |
sessions_screen.dart | SessionsScreen | AuthProvider | Список сессий устройств с IP адресами и кнопками аннулирования. |
admin_panel_screen.dart | AdminPanelScreen | AuthProvider, APIService | Административный интерфейс управления пользователями и рассылками. |
qr_login_screen.dart | QRLoginScreen | AuthProvider, APIService | Сканирование QR кода на ПК для быстрой авторизации. |
privacy_settings_screen.dart | PrivacySettingsScreen | AuthProvider | Переключатели видимости личных данных (телефон, email и т.д.). |
Детальное описание ключевых UI-компонентов
1. Окно чата (ChatScreen)
Состоит из следующих частей:
ListView.builderс обратным порядком элементов (reverse: true) для оптимального скроллинга сообщений снизу вверх.MessageBubble— кастомный виджет пузыря сообщения. Определяет отправителя (выравнивание вправо — синий/фиолетовый, влево — темный) и отображает E2EE медиафайлы с индикацией скачивания.ChatInputArea— текстовое поле ввода с кнопками прикрепления файлов, записи голосовых сообщений (управление черезflutter_sound) и отправки кружочков. Отслеживает фокус клавиатуры и отсылает WebSocket событияtyping/stop_typing.
2. Окно звонка (CallScreen)
Экран разворачивается на весь экран и использует слой Stack для наложения локального превью камеры (маленькое окно, перетаскиваемое пальцем) поверх полноэкранного превью удаленной камеры собеседника. Отображает статус вызова («Инициализация», «Дозвон», «Подключение», «Соединение установлено») и длительность разговора.