когда оно может не перевызывать лямбду в некоторых случаях, и надо юзать ключ у remember функции, и я не совсем понимаю в каких случаях это нужно делать. У меня есть догадка, что если в derivedStateOf лямбде юзается стейт который передаётся как параметр в функцию (или например передаётся объект с State<T> полями), то вот тогда его надо пихать в ключ remember, а типа если он создаётся прям в этой функции, то не надо, но я не уверен. И в доке я не видел чтобы это упоминалось. Может кто знает как правильно это делается?
О! Предвосхитили мой вопрос своим вопросом :)
Мне кажется, для того чтобы это работало надо чтобы компилятор композа специальным образом обрабатывал экземпляры типа State внутри любых композабл функций (включая remember). Тогда для вот этого случая: val somevalFlow3 by remember { derivedStateOf { someval + "hehe" } } компилятор по идее знает что derivedStateOf возвращает экземпляр State и "подписывается" на него. Т.е. это ничем не отличается от случая когда просто какой-то mutableStateOf запоминается в remember.
Обсуждают сегодня