Пишу сервис для общения: прокрутка к сообщению
Наконец добил механику прокрутки к заданному сообщению. Система несложная, но не было времени основательно сесть и придумать как прокручивать историю переписки.
Один из ранних вариантов прокрутки истории:
Плюсы:
как-то оно прокручивает к нужному сообщению
Минусы:
на обе ноги хромает производительность
проблемы с визуализацией сообщений (они пропадают в процессе прокрутки)
сломалась механика дат истории переписки (даты не прилипают к верхней части экрана)
сломалась анимация аватарок (тут они перестали корректно реагировать на поле ввода).
Сделано было так: в памяти создается второй массив сообщений и с ним производится поисковая работа параллельно работе интерфейса. Если скролить нужно недалеко, то по производительности терпимо. Если далеко - появляются тормоза.
В целом идея жизнеспособная, скорее всего ее и довел бы до ума, но нашел более простое решение: загружаю пачку сообщений и ищу среди них нужное, если его нет - прокручиваю эту пачку и сразу же загружаю другую пачку. Если сообщение находится, то прокручиваю к найденному сообщению. Теперь все работает, даже под дебагом с логами не тормозит:
Также добавил простенькую анимацию: найденное сообщение подсвечивается
Теперь буду добавлять систему взаимодействия с сообщениями посредством контекстного меню: кликаешь на сообщение и появляется окошко с выбором действий: редактировать, удалить, поставить эмоджи и тп.
Надеюсь сильно не застряну с контекстным меню 😅
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых. Постепенно буду продолжать делиться успехами разработки сервиса.
ИТ-проекты пикабушников
830 постов3.5K подписчика
Правила сообщества
0. Запрещены посты вне тематики сообщества
1. Уважайте труд людей, пишите только конструктивную критику,
2. Не выкладывайте информацию по своему проекту чаще 2ух раз в месяц