Status Update
Comments
de...@gmail.com <de...@gmail.com> #2
Branch: androidx-main
commit 6ebe664e0db444d2602f67a75a4deada37d0a72f
Author: stevebower <stevebower@google.com>
Date: Wed Oct 13 15:26:27 2021
Update transition handling in SwipeDismissableNavHost.
Transitions should reach Lifecycle.State.RESUMED
when animations are complete.
Test: androidx.wear.compose.navigation.
Bug: 202863359
Relnote: "Update transition handling in
SwipeDismissableNavHost"
Change-Id: I1cbe09cd902f785dcb68f11f098b340e4da1e55a
M wear/compose/compose-navigation/build.gradle
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
M wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/WearNavigator.kt
ap...@google.com <ap...@google.com> #3
Branch: androidx-main
commit d65ce67f974132fad4f26a3f72de6a3b3be2ec0d
Author: stevebower <stevebower@google.com>
Date: Fri Oct 15 09:48:16 2021
Wrap transition handling in SideEffect.
State outside this composable should be
updated in one of the Effect APIs
(as per late comments in aosp/1857639).
Test: androidx.wear.compose.navigation.
Bug: 202863359
Relnote: "Update transition handling in
SwipeDismissableNavHost in a SideEffect"
Change-Id: I04994074e7d024dcf857c156c8c265b57e3769f8
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
[Deleted User] <[Deleted User]> #4
Heads up - I ended up using repeatOnLifecycle(state = Lifecycle.State.STARTED)
in some code because repeatOnLifecycle(state = Lifecycle.State.RESUMED)
wasn't firing, and Alex mentioned this one.
Will provide a repro offline.
lo...@gmail.com <lo...@gmail.com> #5
Shared the repro offline. Steve, do you want me to open a diff bug?
jn...@google.com <jn...@google.com>
da...@gmail.com <da...@gmail.com> #6
We'll just re-open this one.
da...@gmail.com <da...@gmail.com> #7
When swiping to dismiss, we trigger an animation and call popWithTransition so that the lifecycle does reached Resumed until the animation has completed (when onTransitionComplete gets called) - see WearNavigator::popBackStack.
The problem is that, if we call navController.popBackStack directly, that is also calling WearNavigator.popBackStack, which in turn calls popWithTransition - but there's no corresponding animation, so onTransitionComplete is not called and the lifecycle never reaches Resumed. Conversely, we should not call pop (without transition) for the case where animation is running, because the lifecycle would become Resumed too early.
da...@gmail.com <da...@gmail.com> #8
Branch: androidx-main
commit 4c67987dbc870d8e35d811af15ae3edb36f1c836
Author: stevebower <stevebower@google.com>
Date: Mon Mar 28 14:54:44 2022
Destinations do not reach Lifecycle RESUMED after popping the navigation back stack
Test: androidx.wear.compose.navigation
Bug: 202863359
Change-Id: Iff21b4603fd126120241661e066dfaf294d9c25c
M wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHost.kt
na...@google.com <na...@google.com> #9
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.wear.compose:compose-material:1.1.0-rc01
Description
The code to determine the ScalingLazyListState.centerItemIndex has a flaw and could return the wrong item the center line of the viewport is between two items. The current code will find first item that either straddles or is below the center line.
Given that the gaps between items is typically a few dp in size this issues hasn't previously been noticed/reported.
The correct logic would be to find the item that straddles the center line or the item with its edge closest to the center.