Fixed
Status Update
Comments
il...@google.com <il...@google.com> #2
Can you explain your use case? These classes should be built inline and passed directly to the composable
function.
f....@gmail.com <f....@gmail.com> #3
I was trying to build a Destination
class that would be initialised with NamedNavArgument
, and then compute the route string / URI in the correct format given the destination arguments.
val mandatoryArgNames = mandatoryArgs.map { it.name } // error: 'name' is private in NamedNavArgument
val optionalArgNames = optionalArgs.map { it.name } // error: 'name' is private in NamedNavArgument
val mandatoryArgString = mandatoryArgNames.joinToString { "/{$it}" }
val optionalArgString = optionalArgNames
.takeIf { it.isNotEmpty() }
?.joinToString(prefix = "?", separator = "&") { "$it={$it}" } ?: ""
val route = baseRoute + mandatoryArgString + optionalArgString
f....@gmail.com <f....@gmail.com> #4
This way my NavGraph
can be constructed with a for
loop:
val mainGraph = NavHost(controller, startDestination = Destinations.dayPager.route) {
for (dest in Destinations.destinations) {
composable(dest.route, dest.mandatoryArgs + dest.optionalArgs) {
dest.composableEntryPoint(...)
}
}
}
il...@google.com <il...@google.com> #5
I think it makes sense to expose these as public vals and also make the destructuring methods public.
ap...@google.com <ap...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-main
commit 595a8c462a221546cf2c622c28d0252204a28328
Author: Jossi Wolf <10628007+jossiwolf@users.noreply.github.com>
Date: Wed May 05 20:26:42 2021
[GH] [Navigation] Make NamedNavArgument's fields public
## Proposed Changes
Relnote: NamedNavArgument's `name`, `argument` and destructuring functions are now public
## Testing
Test: N/A
## Issues Fixed
Fixes: b/181320559
This is an imported pull request fromhttps://github.com/androidx/androidx/pull/174 .
Resolves #174
Github-Pr-Head-Sha: 4343fabab030f5a754d104eacf8fc4f2b8e0087c
GitOrigin-RevId: 59a1b48dfdc98cdb59fedc8759005e8e862332f8
Change-Id: I03782da5f97d1fcd461ae017ac28be6c1c7dc7f5
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/src/main/java/androidx/navigation/compose/NamedNavArgument.kt
https://android-review.googlesource.com/1697765
Branch: androidx-main
commit 595a8c462a221546cf2c622c28d0252204a28328
Author: Jossi Wolf <10628007+jossiwolf@users.noreply.github.com>
Date: Wed May 05 20:26:42 2021
[GH] [Navigation] Make NamedNavArgument's fields public
## Proposed Changes
Relnote: NamedNavArgument's `name`, `argument` and destructuring functions are now public
## Testing
Test: N/A
## Issues Fixed
Fixes:
This is an imported pull request from
Resolves #174
Github-Pr-Head-Sha: 4343fabab030f5a754d104eacf8fc4f2b8e0087c
GitOrigin-RevId: 59a1b48dfdc98cdb59fedc8759005e8e862332f8
Change-Id: I03782da5f97d1fcd461ae017ac28be6c1c7dc7f5
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/src/main/java/androidx/navigation/compose/NamedNavArgument.kt
Description
Component: navigation-compose 1.0.0-alpha08
Hi there, I am trying to migrate to the Compose flavour of Navigation, and working with the
NamedNavArgument
class. I'd like to be able to retrieve the name that I passed in to thenavArgument()
function, but it's a bit hard because thename
field is private inNamedNavArgument
.Can you please make this field public? Since the class is basically an immutable data class, it seems natural to be able to access its fields publicly.