Status Update
Comments
se...@google.com <se...@google.com>
ma...@gmail.com <ma...@gmail.com> #2
I also tried moving sharedElement to BoxWithConstraints (rather than in its content), but did not help.
So the layout hierarchy looks like this (with more details and with "..." I replaced series of "normal" layouts):
NavHost -> ... -> AnimatedVisibility -> ... -> BoxWithConstraints with sharedElement -> some content
\> ... -> AnimatedVisibility -> ... -> LazyList -> ... -> Animated Visibility -> Selection container -> BoxWithConstraints with sharedElement -> some content
Any ideas?
ap...@google.com <ap...@google.com> #3
In your BoxWithConstraints
do you do any conditional composition? Things like:
if (constraintsExceedsCertainThreshold) composeSomeContent() else someOtherContent()
mi...@gmail.com <mi...@gmail.com> #4
Also note `sharedElement` is put on `BoxWithContraints` now, not on the content.
Thanks!
mi...@gmail.com <mi...@gmail.com> #5
Based on the stacktrace, it seems like the item in question is composed but never placed. Do you use custom precompose
or prefetch logic in your lazy list?
mi...@gmail.com <mi...@gmail.com> #6
There is also one `AnimatedContent` above the `BoxWithConstraints`. Could this cause issues?
Thank you for looking into this.
ja...@gmail.com <ja...@gmail.com> #7
The AnimatedContent never skips measuring/placing children after it composes them. So I don't expect that to be the issue.
Since you mentioned the modifier is on BoxWithConstraints
rather than on the children of BoxWithConstraints
, my guess is it's most likely related to LazyList.
Can you clarify what type of LazyList you are using? Is it LazyColumn/Row or LazyGrid, or something else?
c0...@gmail.com <c0...@gmail.com> #8
It's a LazyColumn.
c0...@gmail.com <c0...@gmail.com> #9
One interesting observation is that this stack trace did not seem to come from the ComposeView
with our app's Activity
content. Because I did a release with copy pasted setContent
+ ComposeView
subclass that is catching exceptions in dispatchDraw
and it did not catch this crash. Is the animations framework doing content composition outside the app's composition context? One note: at the time I tried this exception catching, sharedElement
was applied to the content of BoxWithConstraints
(rather than to the BoxWithConstraints
itself), but I don't think this would have caused the exception catching not to work.
Description
Version used: 2.3.1
```
class MyClass {
internal val liveDataField = MutableLiveData<Boolean>()
fun foo() {
liveDataField.value = false
liveDataField.value = null
}
}
```