[APP-WS-02] Реактивное обновление экрана Холодильника по WebSocket
Фронтенд: Интеграция
NoteКраткая карточка задачи
- Репозиторий / Компонент:
food_tracker_mobile(Dart / Flutter). - Стек:
web_socket_channel, BLoC / Cubit. - Тип задачи: Frontend (Интерфейс и Сеть).
- Статус: В анализе
Описание задачи
Необходимо поддержать WebSocket-соединение на стороне мобильного приложения для мгновенного обновления содержимого холодильника без блокировки интерфейса на экране приёмки чеков.
Инструкция по шагам (Flutter)
- Конфигурация окружения (Важно для Mac/Эмулятора): В сервисе конфигурации
NetworkConfigпрописать локальный адрес для эмулятора Android через хост10.0.2.2(вместоlocalhost), чтобы достучаться до локального Go-сервера. - WebSocket Клиент: Создать синглтон-репозиторий
WebSocketRepositoryна базе пакетаweb_socket_channel. Инициализировать соединение при успешной авторизации пользователя. Предусмотреть авто-реконнект (Heartbeat/Ping-Pong) при обрыве сети. - Связь с BLoC-слоем: В глобальном
FridgeBlocподписаться наStreamотWebSocketRepository. - Обработка события: При парсинге из стрима события
PRODUCTS_PROCESSED:- Добавить ивент
FetchProducts()вFridgeBlocдля незаметного фонового обновления списка продуктов. - Вызвать внутриэкранный
FlushbarилиSnackBarс текстом: «Ура! Продукты успешно добавлены в ваш холодильник».
- Добавить ивент
- Жизненный цикл (Background/Foreground): Настроить переподключение к сокету при возвращении приложения из фонового режима (
WidgetsBindingObserver->AppLifecycleState.resumed).