Top.Mail.Ru
Разработка
Мобильная разработка
Как не сломать ногу, когда делаешь чаты на Flutter
11 апреля
11.00-11.40
425. Разработка-2

• Чаты — сложная фича: ключевые проблемы в синхронизации, сети и порядке сообщений.

• Начальное состояние получаем через REST (чаты, непрочитанные, последние сообщения).

• Актуальность поддерживаем через WebSocket и серверные события.

• REST + WebSocket дают консистентность на нескольких устройствах и уменьшают зависимость от ответов REST.

• Реконнект → при необходимости реинициализация, причём только актуального для пользователя чата.

• “Прочитано” оптимизируем batching + триггеры, учитываем офлайн и завершение приложения.

• InternetConnectionMonitor: отслеживает восстановление сети и помогает повторять действия.

• Отправка текста/вложений: UI-состояния (“отправляется/ошибка”), финальный порядок — только по серверным событиям.

• Вложения: upload URL → загрузка (в т.ч. multipart) → отправка сообщения; пер-файловые статусы и UX (прогресс/ошибка/удаление файла).

• Архитектура UI строится вокруг типизированного “списка элементов” (sealed-иерархии), UI без бизнес-логики.

• Пользовательские действия оформлены use case’ами; масштабирование через композицию и mixin’ы.