Status Update
Comments
pa...@cardinalblue.com <pa...@cardinalblue.com> #2
Branch: androidx-master-dev
commit f57b5cbd142016a2d95fd7bf736262049b085aeb
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon Nov 09 13:23:07 2020
Move FloatingWindow interface to Kotlin
Converted the FloatingWindow inferface to koltin and added the kotlin
std library dependency to navigation-common.
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I98af40e5c9bc747d792180990f1654d6353aa4b5
M navigation/navigation-common/build.gradle
M navigation/navigation-common/src/main/java/androidx/navigation/FloatingWindow.kt
pa...@cardinalblue.com <pa...@cardinalblue.com> #3
Branch: androidx-main
commit b637fdfd6b937d19d4e419c4bfba9b437af6378c
Author: Ian Lake <ilake@google.com>
Date: Thu Apr 01 16:13:27 2021
Merge Navigation Compose version back into Navigation
Rather than run Navigation Compose as a separate,
parallel project from the other Navigation artifacts,
merge the versions together so that we can better
integrate the artifacts together and leverage new
alpha features.
Test: ./gradlew bOS, ran Studio in FLAN and COMPOSE configs
BUG: 172823546
Change-Id: I139a44d95c91dc3cf2e951225aabbc2581914e95
M buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
M navigation/navigation-compose/build.gradle
M navigation/navigation-compose/samples/build.gradle
M navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
M navigation/navigation-runtime/build.gradle
M settings.gradle
M testutils/testutils-navigation/build.gradle
jb...@google.com <jb...@google.com> #4
Branch: androidx-main
commit 51769b7a8d6d3e2032e45b3ec1e3cfe29e718ab6
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Mar 31 10:59:25 2021
Add routes to NavDestination
This change introduces the concept of a route to NavDestination. A route
is String that defines the path to the Destination. Setting the route on
a NavDestination will replace the any id that was set previously and
adds a deep link to the destination. You can set a route on the
NavDestination programatically, or through xml.
RelNote: "You can now add a route to your NavDestination"
Test: NavDestinationTest
Bug: 172823546
Change-Id: I77daf563f480ae54b9728a78e7696ea96d19f264
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationAndroidTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
M navigation/navigation-common/src/main/res-public/values/public_attrs.xml
M navigation/navigation-common/src/main/res/values/attrs.xml
pa...@cardinalblue.com <pa...@cardinalblue.com> #5
Branch: androidx-main
commit df16e2452d8333af236a9e5203b396b98f1056be
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon Apr 05 17:19:54 2021
Add routes to NavDestination Kotlin DSL
You can now add a route to your NavDestination when using the Kotlin
DSL.
RelNote: "You can now add a route to your NavDestination via the Kotlin
DSL"
Test: NavDestinationBuilderTest
Bug: 172823546
Change-Id: I1276418c8ca0b22eb420c0be6b97f0a5d41de0f9
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestinationBuilder.kt
mi...@gmail.com <mi...@gmail.com> #6
Branch: androidx-main
commit e6ad7e497c3006c7c1fbe701c36d45f3906c33b0
Author: Jeremy Woods <jbwoods@google.com>
Date: Mon May 03 17:50:16 2021
Deprecated getStartDestination
Deprecating getStartDestination in favor of getStartDestinationId to
make the API more explicit.
RelNote: "The `getStartDestination()` API has been deprecated in favor
of `getStartDestinationId()`."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I0887ffe673bea453b69dff286d5dc142ce4ef462
M compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/Navigation.kt
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavGraphAndroidTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestination.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraph.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphBuilder.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphNavigator.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavDestinationTest.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavGraphNavigatorTest.kt
M navigation/navigation-common/src/test/java/androidx/navigation/NavGraphTest.kt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BottomBarNavDemo.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavInflaterTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
M navigation/navigation-ui/src/main/java/androidx/navigation/ui/NavigationUI.kt
pa...@cardinalblue.com <pa...@cardinalblue.com> #7
Branch: androidx-main
commit 81aaeccc3cd3530b790317e0488380464f29023e
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed May 05 13:08:11 2021
Deprecate popUpTo in NavOptions
This deprecates popUpTo properties in by NavOptions and the
NavOptionsBuilder DSL in favor of popUpToId. Setting the popUpToId
should be done by using the popUpTo functions without passing in a
builder.
RelNote: "The `popUpTo` kotlin property has been deprecated in favor of
`popUpToId`."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I59c73c383b84eb2b36472966aedff1b53957e26d
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavDestinationBuilderTest.kt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavOptionsBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptions.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptionsBuilder.kt
M navigation/navigation-runtime/src/androidTest/java/androidx/navigation/NavControllerTest.kt
M navigation/navigation-runtime/src/main/java/androidx/navigation/NavController.kt
il...@google.com <il...@google.com>
ti...@google.com <ti...@google.com> #8
Branch: androidx-main
commit fc9a744da1fd9cc99aaf92ec679bd01bb7b4564f
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Mar 31 19:09:29 2021
Add routes to NavGraph
This add routes to NavGraph. You can set a route and
startDestinationRoute as an alternative to an id and
startDestinationId.
Passing a blank route of startDestinationRoute is equivalent to passing
0 meaning you can have a NavGraph with a blank route, but you cannot
have a NavGraph with a blank startDestinationRoute.
This change also includes the addition of routes to the NavGraphBuilder
Kotlin DSL
RelNote: "Navigation now supports adding NavGraphs by using a route."
Test: NavGraphTest, NavGraphAndroidTest, NavGraphBuilderTest
Bug: 172823546
Change-Id: I36c68144318ac23785c9178e847b677c0ef1cd8d
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavGraphAndroidTest.kt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavGraphBuilderTest.kt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavGraphTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavDestinationBuilder.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraph.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavGraphBuilder.kt
ti...@google.com <ti...@google.com> #9
Branch: androidx-main
commit 7220fdfc37ee734820cda773812ad7ec40e587d6
Author: Jeremy Woods <jbwoods@google.com>
Date: Thu Apr 01 14:42:02 2021
Add popUpToRoute to NavOptions
Instead of popUpTo with an id, you can now use it with route.
RelNote: "NavOptions now supports popUpToRoute to allow popping to the
given destination route"
Test: NavOptionsBuilderTest
Bug: 172823546
Change-Id: I0c8fb723e1bfb410b1518a619620415f7a1893e1
M navigation/navigation-common/api/api_lint.ignore
M navigation/navigation-common/api/current.txt
M navigation/navigation-common/api/public_plus_experimental_current.txt
M navigation/navigation-common/api/restricted_current.txt
M navigation/navigation-common/src/androidTest/java/androidx/navigation/NavOptionsBuilderTest.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptions.kt
M navigation/navigation-common/src/main/java/androidx/navigation/NavOptionsBuilder.kt
pa...@cardinalblue.com <pa...@cardinalblue.com> #10
Branch: androidx-main
commit 385530a581a2438d09c6aa8a96635927c1bdb08a
Author: Jeremy Woods <jbwoods@google.com>
Date: Wed Apr 07 15:02:34 2021
Remove routes from navigation compose
Routes are now part of base navigation so we can remove them from
nav-compose. Removed the duplicated APIs and made the appropriate
changes to imports.
RelNote: "You no longer need to use extension methods for route support
in Navigation Compose."
Test: ./gradlew checkApi
Bug: 172823546
Change-Id: I22beb923cccecdc76c555abc7921ab3d9efc860d
M compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/libraries/Libraries.kt
M compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/navigation/Navigation.kt
M compose/material/material/integration-tests/material-catalog/src/main/java/androidx/compose/material/catalog/NavGraph.kt
M hilt/hilt-navigation-compose/samples/src/main/java/androidx/hilt/navigation/compose/samples/HiltViewModelSamples.kt
M hilt/hilt-navigation-compose/src/androidTest/java/androidx/hilt/navigation/compose/HiltViewModelComposeTest.kt
M hilt/hilt-navigation-compose/src/main/java/androidx/hilt/navigation/compose/HiltViewModel.kt
M navigation/navigation-compose/api/current.txt
M navigation/navigation-compose/api/public_plus_experimental_current.txt
M navigation/navigation-compose/api/restricted_current.txt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/BottomBarNavDemo.kt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/NavPopUpToDemo.kt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/NavSingleTopDemo.kt
M navigation/navigation-compose/integration-tests/navigation-demos/src/main/java/androidx/navigation/compose/demos/NavWithArgsDemo.kt
M navigation/navigation-compose/samples/src/main/java/androidx/navigation/compose/samples/NavigationSamples.kt
M navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavGraphBuilderTest.kt
M navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostControllerTest.kt
M navigation/navigation-compose/src/androidTest/java/androidx/navigation/compose/NavHostTest.kt
M navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavGraphBuilder.kt
M navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavHost.kt
M navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavHostController.kt
D navigation/navigation-compose/src/main/java/androidx/navigation/compose/NavOptionsBuilder.kt
pa...@cardinalblue.com <pa...@cardinalblue.com> #11
We've completed the merge of Navigation Compose specific concepts like routes into the core classes of Navigation (i.e., NavDestination
, NavController
, etc.). As such, many of the APIs that used to be extension methods are now methods on the classes themselves. This means that a number of imports previously needed can be removed:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
And the KEY_ROUTE
can now be accessed simply by calling destination.route
.
With these changes, Navigation Compose will join the same versioning scheme as the rest of Navigation and be moved to version 2.4.0-alpha01
for the next version.
ti...@google.com <ti...@google.com> #12
Over to Jeremy for plans regarding releasing future versions of navigation.
hi...@gmail.com <hi...@gmail.com> #13
mi...@fresha.com <mi...@fresha.com> #14
ma...@gmail.com <ma...@gmail.com> #15
Another way to reproduce the issue between 2.7.0 (works) and 2.7.1 (broken) is a simple slideIntoContainer and slideOutOfContainer navigation. Hit the button in the example below fast and you'll see animations flying in from the corner instead of sliding!! (btw tested 2.7.5 and its still broken)
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MaterialTheme {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "first_screen") {
composable(
route = "first_screen",
enterTransition = {
slideIntoContainer(
towards = AnimatedContentTransitionScope.SlideDirection.Left,
)
},
exitTransition = {
slideOutOfContainer(
towards = AnimatedContentTransitionScope.SlideDirection.Left,
)
},
) {
FirstScreen {
navController.navigate("first_screen")
}
}
}
}
}
}
}
@Composable
fun FirstScreen(navigate: () -> Unit) {
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Button(onClick = {
navigate()
}) {
Text(text = "Navigate!")
}
}
}
jb...@google.com <jb...@google.com> #16
In 2.7.1
we provided a fix for androidx.compose.ui:ui:1.6.0-alpha03
, but since it added new APIs it cannot be backported into a point release of Compose 1.5.x
.
Once compose 1.6.0 is stable, we can bump the dependency and release a new version of Navigation with the fix, but until then you can resolve it by either bumping your own compose dependency to use 1.6.x
or continuing to use Navigation 2.7.0
if you don't need any of the fixes from the other Navigation point releases.
jb...@google.com <jb...@google.com> #17
Navigation 2.8.0-alpha01
has upgraded the Compose dependency to 1.7.0-alpha01
so this will be addressed in the next release.
j....@gmail.com <j....@gmail.com> #18
Since compose 1.6.0 is live can we have a fix for that?
ma...@gmail.com <ma...@gmail.com> #19
al...@gmail.com <al...@gmail.com> #20
ir...@gmail.com <ir...@gmail.com> #21
We have the same issue (Compose 1.6.2 and Navigation-Compose 2.7.6).
After explicitly setting the enter and exit transitions, I noticed that on some screens it was working correctly, on others it wasn't. The nav destination screens working correctly were calling the .fillMaxSize() modifier on the outermost/topmost Composable in the view composition hierarchy.
So the accidental/unwanted scale animation seems to have something to do with the sizing of the view children during layouting.
Instead of now having to add sizing modifiers to all destination Composables/screens, adding the .fillMaxSize() modifier to the NavHost itself does the trick. As a result, the specified enter and exit transitions are never overriden by whatever causes the bug.
NavHost(
modifier = Modifier.fillMaxSize(),
navController = navController,
startDestination = navController.currentBackStackEntry?.destination?.route ?: ProfileDestination.Overview.route(),
enterTransition = { fadeIn(animationSpec = tween(200)) },
exitTransition = { fadeOut(animationSpec = tween(200)) }
)
al...@gmail.com <al...@gmail.com> #22
We observe the same behaviour as described in the previous comment – if size of the NavHost was not zero and changing as a result of navigation, we can see weird left slide-in animation. So I doubt this issue is fixed
il...@google.com <il...@google.com> #23
Please make sure you've updated to the recently released
Description
Version used: 2.7.1
Devices/Android versions reproduced on: Pixel 7
Using the navigation compose in the previous version I was able to immediately navigate away from the landing screen, if the user is logged in, with a nice crossfade animation playing between my landing screen and main screen. See: it-was-working-in-2.7.0-beta02.mp4
Upon updating the experience has gotten worse: when navigating away from the landing screen (while it's enter animation hasn't finished yet), a weird inflating animation is playing. See: expanding-bug.mp4
Since these are only cross fade animations the size of the container should never change. Why does the size of the container animating for a simple crossfade animation?
Expected behavior:
Since the size of the initial screen doesn't change during it's enter transition, I would expect the second screen to only play a fade in animation without the weird clipping/size changing that's happening at the moment.
Code to reproduce: (see also NavHostBugReport.zip)
```
NavHostBugReportTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
val navController = rememberNavController()
NavHost(navController = navController, "@landing") {
navigation("landing", "@landing") {
composable("landing") {
Box(modifier = Modifier
.fillMaxSize()
.background(Color.Red))
LaunchedEffect(key1 = Unit) {
navController.navigate("main")
}
}
}
navigation("main", "@main") {
composable("main") {
Box(modifier = Modifier
.fillMaxSize()
.background(Color.Blue))
}
}
}
}
}
```
If this is a bug in the library, we would appreciate if you could attach:
- Sample project to trigger the issue. (attached: NavHostBugReport.zip)
- A screenrecord or screenshots showing the issue (if UI related).
working correctly in 2.7.0-beta02: it-was-working-in-2.7.0-beta02.mp4
working unexpectedly in 2.7.1: expanding-bug.mp4