Feature Request P2
Status Update
Comments
em...@google.com <em...@google.com> #2
BTW, the source code for this is fairly straightforward. I just added the source into the sample for now, but it would be nicer if we had the function.
From source:
/**
* Gets the current navigation back stack entry as a [MutableState]. When the given navController
* changes the back stack due to a [NavController.navigate] or [NavController.popBackStack] this
* will trigger a recompose and return the top entry on the back stack.
*
* @return a mutable state of the current back stack entry
*/
@Composable
public fun NavController.currentBackStackEntryAsState(): State<NavBackStackEntry?> {
return currentBackStackEntryFlow.collectAsState(null)
}
em...@google.com <em...@google.com>
ap...@google.com <ap...@google.com> #3
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 804463f3f416212296133fe53e30b5d5cbc2fba9
Author: stevebower <stevebower@google.com>
Date: Wed Jan 05 15:04:02 2022
Add currentBackStackEntryAsState to Wear Compose Navigation.
Test: Run tests for wear.compose.navigation.
Bug: 212739653
Relnote: "We have added NavController.currentBackStackEntryAsState()
to the Wear.Compose.Navigation library."
Change-Id: If90286c7debe623df926a091f15766abf04f2ecc
M wear/compose/compose-navigation/api/restricted_current.txt
M wear/compose/compose-navigation/api/current.txt
M wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
M wear/compose/compose-navigation/api/public_plus_experimental_current.txt
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt
https://android-review.googlesource.com/1926189
Branch: androidx-main
commit 804463f3f416212296133fe53e30b5d5cbc2fba9
Author: stevebower <stevebower@google.com>
Date: Wed Jan 05 15:04:02 2022
Add currentBackStackEntryAsState to Wear Compose Navigation.
Test: Run tests for wear.compose.navigation.
Bug: 212739653
Relnote: "We have added NavController.currentBackStackEntryAsState()
to the Wear.Compose.Navigation library."
Change-Id: If90286c7debe623df926a091f15766abf04f2ecc
M wear/compose/compose-navigation/api/restricted_current.txt
M wear/compose/compose-navigation/api/current.txt
M wear/compose/compose-navigation/src/androidTest/kotlin/androidx/wear/compose/navigation/SwipeDismissableNavHostTest.kt
M wear/compose/compose-navigation/api/public_plus_experimental_current.txt
M wear/compose/compose-navigation/src/main/java/androidx/wear/compose/navigation/SwipeDismissableNavHostController.kt
Description
Sealed classes and interfaces cannot be extended directly outside their module. Intuitively this implies they are effectively final, and therefore otherwise incompatible changes would be allowed, such as adding a new abstract method.
Unfortunately, it's possible to extend a sealed class with an abstract class as below and inadvertently expose a new abstract method (
funFromSealed()
in the example below). We should figure out how we want to model this behavior in Metalava, figure out if there's any other considerations to sealed classes, and then maybe updateClassItem.isEffectivelyFinal()
to match.