Это баг коила? отображаю через val avatarImageRequest = rememberAsyncImagePainter(

model = ImageRequest.Builder(context)
.data(vm.getAvatarImage(roomData.avatarUrl))
.build()
)

34 ответов

68 просмотров

Попробуй другую либу, поймёшь, к примеру глайд

Koor-Desart Автор вопроса
Валентин Беркатюк
Попробуй другую либу, поймёшь, к примеру глайд

не хочется. я думаю мультиплатформу подтянуть, когда разберусь полностью со структурой приложения

Вроде нормально coil работает. Попробуй asyncimage на всякий случай, вдруг рекомпозиции происходит. И передай все же url, может там проблема

Koor-Desart Автор вопроса
Maxim Filatov
Вроде нормально coil работает. Попробуй asyncimage...

Мб рекомпозиции, но как на зло не работает лейаут инспектор

Koor-Desart Автор вопроса

оказывается при скролле код выполнялся заново потому что лейзи лист

попробуй завернуть ImageRequest.Builder(context) .data(vm.getAvatarImage(roomData.avatarUrl)) .build() в remember(key1 = roomData.avatarUrl) { ... } А ещё я надеюсь что vm.getAvatarImage() не качает картинку и возвращает обратно битмап. Если оно действительно её качает, то нужно это по другому делать.

Koor-Desart Автор вопроса
Dmitry Fabrichny
попробуй завернуть ImageRequest.Builder(context) ...

Оно как раз оно так и делало (либо качало, либо брало из памяти). Я сделал мапу и теперь гружу в нее по айдишнику, и потом по айдишнику беру

Koor Desart
Оно как раз оно так и делало (либо качало, либо бр...

ты можешь просто roomData.avatarUrl в ImageRequest.Builder.data(...) передавать.

Koor-Desart Автор вопроса
Dmitry Fabrichny
ты можешь просто roomData.avatarUrl в ImageRequest...

Нет, потому что ссылка специфична для сервиса, и ее нужно разбирать на куски и собирать используя данные из другого источника. В сдк для этого уже есть готовый инструмент, поэтому не хочу колесо изобретать

При каждой рекомпозиции ImageRequest создаётся заново. ImageRequest.Builder нужно ремемберить отдельно внутри rememberAsyncImagePainter

Koor Desart
оказывается при скролле код выполнялся заново пото...

А ты кеш не включил потому что loader передавал🤷‍♂ Но странно, элемент экран не покидал, видимо что-то у тебя дёргает рекомпозиции в самом итеме (может лямбду передал, может что не стабильное)

Koor-Desart Автор вопроса
Maxim Filatov
А ты кеш не включил потому что loader передавал🤷‍♂...

Да не, это просто так работает лейзи колумн. У меня все обвернуто в ремемберы, логики в уи нет кроме формата даты и иконки статуса сообщения

Не работает так lazy, при scroll рекомпозиции не вызываются, только если пропал/зашёл на экран, но по видео не та ситуация

Koor-Desart Автор вопроса
Maxim Filatov
Не работает так lazy, при scroll рекомпозиции не в...

Так это и не рекомпозиция. В лейаут инспекторе ничего нет. Во время скролла в композабле не происходит ничего совершенно,

Koor Desart
Так это и не рекомпозиция. В лейаут инспекторе нич...

Но тогда почему asynkrememberpainter перезапускается? Т.е. он грузит картинку, она мигает и по новой. Это жжж не спроста...

Koor-Desart Автор вопроса
Maxim Filatov
Но тогда почему asynkrememberpainter перезапускает...

Тот же вопрос. Я в сам композабл лог д вставил и в логах увидел, что на каждое изменения оффсета он выполнялся

Koor Desart
Тот же вопрос. Я в сам композабл лог д вставил и в...

Вот, это же и есть рекомпозияция. А всю функцию можешь выложить?

Koor-Desart Автор вопроса
Koor Desart
https://gist.github.com/Number869/04cbefc0e9c7082e...

Room же не стабильный, попробуй передать статичный url или обернуть room в дата класс и пометить как stable

Koor-Desart Автор вопроса
Maxim Filatov
Room же не стабильный, попробуй передать статичный...

Я в лейзи листе, где вызываю этот айтем, убрал сам айтем и поставил лог д. В логах то же самое. Что-то сделал не то, где вызывал сам айтем. Ща методом исключения выясню

Koor-Desart Автор вопроса
Maxim Filatov
Room же не стабильный, попробуй передать статичный...

Там из-за лаунчд эффекта эта проблема, как минимум частично, оказывается, даже если он ничего не делал кроме проверки одного булеан значения

Koor Desart
Там из-за лаунчд эффекта эта проблема, как минимум...

Надо править в общем. Проблема не в painter🤷‍♂

Koor-Desart Автор вопроса
Maxim Filatov
Надо править в общем. Проблема не в painter🤷‍♂

Получается так. Спасибо за наводку👍

Koor-Desart Автор вопроса
Maxim Filatov
Room же не стабильный, попробуй передать статичный...

оказалось это не рум нестабильный, а лукахед скоуп

Koor Desart
оказалось это не рум нестабильный, а лукахед скоуп

А где именно и как этот соус используется?

Koor-Desart Автор вопроса
Maxim Filatov
Но рум по идее тоже нестабильный...

Не, он как раз таки стабильным оказался. Его передача как параметр не вызывает иекомпозиций

Koor-Desart Автор вопроса
Maxim Filatov
А где именно и как этот соус используется?

Я скоуп передаю потому что у меня анимации сложные. Я из комплзабла в композабл элементы передаю

Так scope же внутри получить можно. Зачем его передавать?🧐 И в примере его нет🤷‍♂

Koor-Desart Автор вопроса
Maxim Filatov
Так scope же внутри получить можно. Зачем его пере...

Нельзя. Будет проблема с инстансами и анимации по итогу не будет

Koor Desart
Нельзя. Будет проблема с инстансами и анимации по ...

Я не очень понимаю что ты делаешь. Ты scope в composable прокидываешь или modifier свой используешь?

Koor-Desart Автор вопроса
Maxim Filatov
Я не очень понимаю что ты делаешь. Ты scope в comp...

Я прокидываю скоуп. Он нужен и модифаеру, и комозаблам внутри, поскольку в них тоже есть элементы зависящие именно от этого скоупа. Через контекст я вопрос рекомпозиций от передачи скоупа как параметра решил. Остался вопрос как избежать рекомпозиций при скролле от использования модифаеров лейаута

Koor Desart
Я прокидываю скоуп. Он нужен и модифаеру, и комоза...

Если modifier кастомный можно отнаследовать от element вроде, там есть scope

Koor-Desart Автор вопроса

Похожие вопросы

Обсуждают сегодня

Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
У меня задача: написать брокер сообщений. Очереди и потребители. Очереди поддерживают приоритеты. Очередь отдает сообщения, только обработчикам с соответствующими характеристи...
Aleksandr Filippov
2
Решил тут попробовать embassy на bluepill. Все установил, собрал blink и успешно залил с помощью St link 2 китайского. Но после этого чип шиться перестал. На форумах прочел, ч...
Lukutin R2AJP
6
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
Карта сайта