[APP-WS-02] Реактивное обновление экрана Холодильника по WebSocket

Фронтенд: Интеграция

Published

October 14, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: food_tracker_mobile (Dart / Flutter).
  • Стек: web_socket_channel, BLoC / Cubit.
  • Тип задачи: Frontend (Интерфейс и Сеть).
  • Статус: В анализе

Описание задачи

Необходимо поддержать WebSocket-соединение на стороне мобильного приложения для мгновенного обновления содержимого холодильника без блокировки интерфейса на экране приёмки чеков.

Инструкция по шагам (Flutter)

  1. Конфигурация окружения (Важно для Mac/Эмулятора): В сервисе конфигурации NetworkConfig прописать локальный адрес для эмулятора Android через хост 10.0.2.2 (вместо localhost), чтобы достучаться до локального Go-сервера.
  2. WebSocket Клиент: Создать синглтон-репозиторий WebSocketRepository на базе пакета web_socket_channel. Инициализировать соединение при успешной авторизации пользователя. Предусмотреть авто-реконнект (Heartbeat/Ping-Pong) при обрыве сети.
  3. Связь с BLoC-слоем: В глобальном FridgeBloc подписаться на Stream от WebSocketRepository.
  4. Обработка события: При парсинге из стрима события PRODUCTS_PROCESSED:
    • Добавить ивент FetchProducts() в FridgeBloc для незаметного фонового обновления списка продуктов.
    • Вызвать внутриэкранный Flushbar или SnackBar с текстом: «Ура! Продукты успешно добавлены в ваш холодильник».
  5. Жизненный цикл (Background/Foreground): Настроить переподключение к сокету при возвращении приложения из фонового режима (WidgetsBindingObserver -> AppLifecycleState.resumed).