Annotation processing library for type-safe Jetpack Compose navigation with no boilerplate.
APACHE-2.0 License
Bot releases are hidden (Show)
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta07...2.1.0-beta08
Published by raamcosta 5 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-beta07...2.0.0-beta08
Published by raamcosta 5 months ago
Example:
DestinationsNavHost(
//...
) {
MyDestination addDeepLink { uriPattern = "schema://${MyDestination.route}" }
}
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta06...2.1.0-beta07
Published by raamcosta 5 months ago
Example:
DestinationsNavHost(
//...
) {
MyDestination addDeepLink { uriPattern = "schema://${MyDestination.route}" }
}
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta06...2.0.0-beta07
Published by raamcosta 5 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-beta05...2.0.0-beta06
Published by raamcosta 5 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-beta05...2.0.0-beta06
Published by raamcosta 6 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/1.11.3-alpha...1.11.4-alpha
Published by raamcosta 6 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta02...2.1.0-beta03
Published by raamcosta 6 months ago
Most of our NavController
extension functions were removed. Instead, if you want to use the type safe Compose Destinations friendly APIs, you'll need to use DestinationsNavigator
.
There are two new APIs to get this navigator from NavController: (you can also just receive DestinationsNavigator
on your annotated Composables)
navController.rememberDestinationsNavigator()
navController.toDestinationsNavigator()
Keep in mind you can still use NavController directly by adding .route
. For example: navController.navigate(Destination(args).route)
.
We were forced to do this since new navigation versions introduced a new member function of NavController class that would shadow our extension functions (i.e, users of the lib would start calling it silently instead of our extension functions - the result would be a runtime crash). By removing the APIs on our side, it forces users of Compose Destinations to go handle this change and avoid runtime issues that way.
onlyIfResumed
removed from navigate APIs. (including navigating back with result).dropUnlessResumed
:onClick = dropUnlessResumed {
navigator.navigate(SomeDestination)
}
// BEFORE
onClick = {
navigator.navigate(SomeDestination, onlyIfResumed = true)
}
Here it was just a timing thing. Given that we were forced into other breaking changes, might as well do this too. It also made it easier to provide functions to get DestinationsNavigator
(see above) since it no longer depends on the NavBackStackEntry
.
SharedTransitionScope
and AnimatedVisibilityScope
.Here is the recommended way to implement shared transition elements with the library:
//...
SharedTransitionLayout {
DestinationsNavHost(
//...
dependenciesContainerBuilder = {
dependency(this@SharedTransitionLayout) // provide SharedTransitionScope to screens that need it
}
)
}
// On screens:
@Destination<MyGraph>//...
@Composable
fun SharedTransitionScope.MyScreen(
animatedVisibilityScope: AnimatedVisibilityScope //no need to do anything, it will be provided
) {
Box( // just an example ofc
modifier = Modifier
.sharedElement(
state = rememberSharedContentState(key = "whatever id"),
animatedVisibilityScope = animatedVisibilityScope
)
)
//....
}
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-beta01...2.1.0-beta02
Published by raamcosta 6 months ago
Most of our NavController
extension functions were removed. Instead, if you want to use the type safe Compose Destinations friendly APIs, you'll need to use DestinationsNavigator
.
There are two new APIs to get this navigator from NavController: (you can also just receive DestinationsNavigator
on your annotated Composables)
navController.rememberDestinationsNavigator()
navController.toDestinationsNavigator()
Keep in mind you can still use NavController directly by adding .route
. For example: navController.navigate(Destination(args).route)
.
We were forced to do this since new navigation versions introduced a new member function of NavController class that would shadow our extension functions (i.e, users of the lib would start calling it silently instead of our extension functions - the result would be a runtime crash). By removing the APIs on our side, it forces users of Compose Destinations to go handle this change and avoid runtime issues that way.
onlyIfResumed
removed from navigate APIs. (including navigating back with result).dropUnlessResumed
:onClick = dropUnlessResumed {
navigator.navigate(SomeDestination)
}
// BEFORE
onClick = {
navigator.navigate(SomeDestination, onlyIfResumed = true)
}
Here it was just a timing thing. Given that we were forced into other breaking changes, might as well do this too. It also made it easier to provide functions to get DestinationsNavigator
(see above) since it no longer depends on the NavBackStackEntry
.
SharedTransitionScope
and AnimatedVisibilityScope
.Here is the recommended way to implement shared transition elements with the library:
//...
SharedTransitionLayout {
DestinationsNavHost(
dependenciesContainerBuilder = {
dependency(this@SharedTransitionLayout) // provide SharedTransitionScope to screens that need it
}
)
}
// On screens:
@Destination<MyGraph>//...
@Composable
fun SharedTransitionScope.MyScreen(
animatedVisibilityScope: AnimatedVisibilityScope //no need to do anything, it will be provided
) {
Box( // just an example ofc
modifier = Modifier
.sharedElement(
state = rememberSharedContentState(key = "whatever id"),
animatedVisibilityScope = animatedVisibilityScope
)
)
//....
}
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/1.11.2-alpha...1.11.3-alpha
Published by raamcosta 7 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-alpha06...2.1.0-beta01
Published by raamcosta 7 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-alpha07...2.0.0-beta01
Published by raamcosta 7 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/1.11.1-alpha...1.11.2-alpha
Published by raamcosta 7 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-alpha06...2.0.0-alpha07
Published by raamcosta 7 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-alpha05...2.1.0-alpha06
Published by raamcosta 7 months ago
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-alpha05...2.0.0-alpha06
Published by raamcosta 7 months ago
JavaActivityDestination
annotation to allow for navgraph setting on Java Activities.Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-alpha03...2.1.0-alpha05
Published by raamcosta 7 months ago
JavaActivityDestination
annotation to allow for navgraph setting on Java Activities.Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-alpha03...2.0.0-alpha05
Published by raamcosta 7 months ago
TestDestinationsNavigator
to bridge TestNavHostController into DestinationsNavigator
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.1.0-alpha02...2.1.0-alpha03
Published by raamcosta 7 months ago
TestDestinationsNavigator
to bridge TestNavHostController into DestinationsNavigator
Full Changelog: https://github.com/raamcosta/compose-destinations/compare/2.0.0-alpharc02...2.0.0-alpha03