Skip to content

Commit

Permalink
Updated Navigation API
Browse files Browse the repository at this point in the history
  • Loading branch information
chRyNaN committed Jul 28, 2023
1 parent 394f17c commit 7a29fcf
Show file tree
Hide file tree
Showing 47 changed files with 719 additions and 422 deletions.
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ NavigationContainer(navigator) { (destination, _) ->
"Greeting" -> Column {
Text("Hello")

Button(onClick = { navigator.goTo("Farewell") }) {
Button(onClick = { navigator.push("Farewell") }) {
Text("Say Goodbye")
}
}
Expand Down Expand Up @@ -96,15 +96,15 @@ enum class MainContext(
### Navigator

A `Navigator` is used to navigate between navigation contexts and destinations via the
convenient `goTo`, `changeContext`, and `goBack` functions. A `Navigator` can be obtained via one of the constructor
functions or the `remember`/`rememberSavable` functions when using Jetpack Compose/Multiplatform Compose.
convenient `push`, `popContext`, and `popDestination` functions. A `Navigator` can be obtained via one of the
constructor functions or the `remember`/`rememberSavable` functions when using Jetpack Compose/Multiplatform Compose.

```kotlin
val navigator = rememberNavigator(initialDestination = AppDestination.HOME)

BackHandler { navigator.goBack() }
BackHandler { navigator.popDestination() }

ListItem(modifier = Modifier.clickable { navigator.goTo(AppDestination.DETAILS) })
ListItem(modifier = Modifier.clickable { navigator.push(AppDestination.DETAILS) })
```

### NavigationContainer
Expand Down Expand Up @@ -155,14 +155,14 @@ fun <Destination : NavigationDestination, Context : NavigationContext<Destinatio
```kotlin
@Composable
fun App() {
val navigator = rememberNavigator(...)
val navigator = rememberNavigator(...)

...
...

MyScreen(
onBackPressed = { navigator.goBack() },
onGoToDetails = { navigator.goTo(AppDestination.Details(it)) }
)
MyScreen(
onBackPressed = { navigator.popDestination() },
onGoToDetails = { navigator.push(AppDestination.Details(it)) }
)
}
```

Expand All @@ -176,7 +176,7 @@ fun ParentComponent() {

...

ChildComponent(onBack = { parentNavigator.goBack() })
ChildComponent(onBack = { parentNavigator.popDestination() })
}

@Composable
Expand All @@ -186,7 +186,7 @@ fun ChildComponent(
val childNavigator = rememberNavigator(...)

BackHandler {
if (!childNavigator.goBack()) {
if (!childNavigator.canPopDestination()) {
onBack.invoke()
}
}
Expand Down Expand Up @@ -259,7 +259,7 @@ repository a ⭐
## License ⚖️

```
Copyright 2021 chRyNaN
Copyright 2023 chRyNaN
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)

fun &lt;[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)&gt; [rememberNavigator](remember-navigator.md)(initialDestination: [Destination](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)&lt;[Destination](remember-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)&lt;[Destination](remember-navigator.md)&gt;&gt;
fun &lt;[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md)&gt; [rememberNavigator](remember-navigator.md)(initialDestination: [Destination](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)&lt;[Destination](remember-navigator.md), [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md)&lt;[Destination](remember-navigator.md)&gt;&gt;

Creates and remembers a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application.

Expand All @@ -30,7 +30,6 @@ common
|---|---|
| initialDestination | The initial [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md) value to start at for this [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md). |
| duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). |
| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). |
| destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) when navigating between different [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). |

#### See also
Expand All @@ -48,7 +47,7 @@ common

@[Composable](https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composable.html)

fun &lt;[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)&lt;[Destination](remember-navigator.md)&gt;&gt; [rememberNavigator](remember-navigator.md)(initialContext: [Context](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, backwardsNavigationStrategy: [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) = NavigationStrategy.BackwardsNavigation.IN_CONTEXT, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)&lt;[Destination](remember-navigator.md), [Context](remember-navigator.md)&gt;
fun &lt;[Destination](remember-navigator.md) : [NavigationDestination](../../../navigation-core/com.chrynan.navigation/-navigation-destination/index.md), [Context](remember-navigator.md) : [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)&lt;[Destination](remember-navigator.md)&gt;&gt; [rememberNavigator](remember-navigator.md)(initialContext: [Context](remember-navigator.md), duplicateDestinationStrategy: [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) = NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES, destinationRetentionStrategy: [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) = NavigationStrategy.DestinationRetention.RETAIN): [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md)&lt;[Destination](remember-navigator.md), [Context](remember-navigator.md)&gt;

Creates and remembers a [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) with a [SingleNavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-single-navigation-context/index.md). A [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md) can be used to navigate between different UI content in an application.

Expand All @@ -70,7 +69,6 @@ common
|---|---|
| initialContext | The initial [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md) value to start at for this [Navigator](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigator/index.md). |
| duplicateDestinationStrategy | The [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) strategy for handling of duplicate destination content within a [Context](remember-navigator.md) stack. Read the documentation on [NavigationStrategy.DuplicateDestination](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DuplicateDestination.ALLOW_DUPLICATES](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-duplicate-destination/-a-l-l-o-w_-d-u-p-l-i-c-a-t-e-s/index.md). |
| backwardsNavigationStrategy | The [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) strategy of supported back navigation (across contexts or just destinations within the current context). Read the documentation on [NavigationStrategy.BackwardsNavigation](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/index.md) for more information about the operations that are supported. Defaults to [NavigationStrategy.BackwardsNavigation.IN_CONTEXT](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-backwards-navigation/-i-n_-c-o-n-t-e-x-t/index.md). |
| destinationRetentionStrategy | The [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) strategy for handling of destination stacks within a [Context](remember-navigator.md) when navigating between different [NavigationContext](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-context/index.md)s. Read the documentation on [NavigationStrategy.DestinationRetention](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/index.md) for more information about the supported operations. Defaults to [NavigationStrategy.DestinationRetention.RETAIN](../../../navigation-core/navigation-core/com.chrynan.navigation/-navigation-strategy/-destination-retention/-r-e-t-a-i-n/index.md). |

#### See also
Expand Down

0 comments on commit 7a29fcf

Please sign in to comment.