Как обновить вот это с содержимым правильно ? Текст добавляется

с сервака корутиной. Костыль запилил через бэкграунд Row.

24 ответов

26 просмотров

Что делает Request.getDiameter? В принципе ничего не мешает держать экземпляр mutableStateOf(0.dp) где-то рядом с тем местом где происходит обработка ответа с сервера (view model или где-нибудь ещё) и потом просто использовать его напрямую в компзабл функции.

Serdjuk-Сердюк Автор вопроса
Agry Gami
Что делает Request.getDiameter? В принципе ничего ...

getDiameter выборка значений с бд сервера по корутине. надеялся что есть какойнить update в компонентах с мутабл параметром bool

Serdjuk Сердюк
getDiameter выборка значений с бд сервера по корут...

Мда, это даже хуже чем я подумал :) и вы правы - так делать не стоит. Композабл функция теоретически может вызваться на каждый кадр и вы точно не хотите чтобы у вас запрос на сервер летел каждый кадр.

Serdjuk Сердюк
getDiameter выборка значений с бд сервера по корут...

Поэтому вам надо определиться когда вы хотите вызывать Request.getDiameter() и делать это вне композабл функции

Serdjuk-Сердюк Автор вопроса
Agry Gami
Мда, это даже хуже чем я подумал :) и вы правы - т...

судя по логам вызывается только при обновлении dp. Или оно рпоизвольно может начать вызывать каждый фрейм этот компонент ?

Serdjuk Сердюк
судя по логам вызывается только при обновлении dp....

Композ делает кучу оптимизаций для того чтобы не делать лишнего если не надо но эти оптимизации ничего не знают о ваших задачах. К примеру если вы положите этот компонент в скроллируемый список и попробуете его поскроллить - вот тогда вы скорее всего увидите запрос на каждый кадр :)

Serdjuk-Сердюк Автор вопроса
Agry Gami
Композ делает кучу оптимизаций для того чтобы не д...

так и есть. В скролируемом списке )) Не учел

Serdjuk Сердюк
так и есть. В скролируемом списке )) Не учел

Так что давайте разберёмся - что вы таки хотите и когда

Serdjuk-Сердюк Автор вопроса
Agry Gami
Так что давайте разберёмся - что вы таки хотите и ...

При запуске приложения нужно данное обращение на сервер + при изменении данных с сервера толкать их обратно

Serdjuk Сердюк
При запуске приложения нужно данное обращение на с...

"запуск приложения" это когда? Активити ваше на экране или прям Application.onCreate? У вас там где-нибудь поблизости вьюмодель есть?

Serdjuk-Сердюк Автор вопроса
Agry Gami
"запуск приложения" это когда? Активити ваше на эк...

Когда на экране. БД типа склад. 1) Получаем диамерты продукта. 2) Получаем номера продукта по кликнутому диаметру. 3) В каждом номере возможны изменения юзером. Все пункты = запросы к бд В бэкэнде я полный ноль...

Serdjuk Сердюк
Когда на экране. БД типа склад. 1) Получаем диаме...

Ох :) ладно попробуем продраться Для начала... объясните что делает вот эта строка: Request.getDiamter(list = list) { d:Int -> p = d.dp } Метод getDiameter идёт на сервер... и вероятно мутирует list который вы ему передаёте, но зачем ему ещё и коллбек? и что такое в этом коллбеке d?

Agry Gami
Ох :) ладно попробуем продраться Для начала... объ...

Почему запрос на сервер происходит при каждой композиции?

Artem Osipov
Почему запрос на сервер происходит при каждой комп...

Ну а откуда компоуз знает что вот именно этот вызов функции не надо делать?

Agry Gami
Ну а откуда компоуз знает что вот именно этот вызо...

Думаю что стоит начать с самых основ доки, thinking in compose

Serdjuk-Сердюк Автор вопроса
Agry Gami
Ох :) ладно попробуем продраться Для начала... объ...

Да, мутирует. Но при его мутации обновления нет. d в колбэке это костыль из-за которого и был задан вопрос изначально. Это мутант модификатора padding от Row в который кладется список. Пока не добавил этот костыль - не обновлялось. Хотя возможно я что-то не то делал. Про запрос: Он в композабл функции, но выше всяких Row. И судя по логам не вызывается. Обновляется конкретно Row

Serdjuk Сердюк
Да, мутирует. Но при его мутации обновления нет. d...

Потому что надо во вьюмодели это вызывать Но можно пока внутрь LaunchedEffect(Unit) засунуть

Serdjuk Сердюк
Да, мутирует. Но при его мутации обновления нет. d...

Про костыль понятно. Костыль не нужен. То что запрос "в композабл функции" э... Т.е. Request.getDiameter() это композабл функция? Не надо так делать :) Композабл функции не должны заниматься общением с бекендом напрямую ни в каком виде - их задача смотреть на стейт и рисовать его. Покажите код этого вашего getDiameter.

Agry Gami
Про костыль понятно. Костыль не нужен. То что запр...

Женька Вартанов поспорил бы с тобой🙂

Agry Gami
Кто такой - почему не знаю :))

Я тоже не знаю, почему ты не знаешь)

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

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

Недавно 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
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
14
Карта сайта