Skip to content

Commit d59f51d

Browse files
authored
Merge pull request #119 from NordicPlayground/dependency/navigation
Navigation library updated
2 parents 534379b + 37ba2be commit d59f51d

File tree

3 files changed

+45
-10
lines changed

3 files changed

+45
-10
lines changed

Diff for: navigation/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@ android {
5353
}
5454

5555
dependencies {
56+
implementation(libs.androidx.navigation.compose)
5657
}

Diff for: navigation/src/main/java/no/nordicsemi/android/common/navigation/NavigationView.kt

+42-1
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,20 @@ package no.nordicsemi.android.common.navigation
3333

3434
import android.app.Activity
3535
import android.os.Bundle
36-
import androidx.activity.compose.BackHandler
36+
import androidx.compose.animation.AnimatedContentTransitionScope
37+
import androidx.compose.animation.EnterTransition
38+
import androidx.compose.animation.ExitTransition
39+
import androidx.compose.animation.SizeTransform
40+
import androidx.compose.animation.core.tween
41+
import androidx.compose.animation.fadeIn
42+
import androidx.compose.animation.fadeOut
3743
import androidx.compose.runtime.Composable
3844
import androidx.compose.runtime.getValue
3945
import androidx.compose.ui.Modifier
4046
import androidx.compose.ui.platform.LocalContext
4147
import androidx.hilt.navigation.compose.hiltViewModel
4248
import androidx.lifecycle.compose.collectAsStateWithLifecycle
49+
import androidx.navigation.NavBackStackEntry
4350
import androidx.navigation.NavGraph.Companion.findStartDestination
4451
import androidx.navigation.NavGraphBuilder
4552
import androidx.navigation.compose.NavHost
@@ -59,11 +66,40 @@ import no.nordicsemi.android.common.navigation.internal.navigate
5966
*
6067
* @param destinations The list of possible destinations.
6168
* @param modifier The modifier to be applied to the layout.
69+
* @param enterTransition callback to define enter transitions for destination in this host
70+
* @param exitTransition callback to define exit transitions for destination in this host
71+
* @param popEnterTransition callback to define popEnter transitions for destination in this host
72+
* @param popExitTransition callback to define popExit transitions for destination in this host
73+
* @param sizeTransform callback to define the size transform for destinations in this host
6274
*/
6375
@Composable
6476
fun NavigationView(
6577
destinations: List<NavigationDestination>,
6678
modifier: Modifier = Modifier,
79+
enterTransition:
80+
(@JvmSuppressWildcards
81+
AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition) =
82+
{
83+
fadeIn(animationSpec = tween(700))
84+
},
85+
exitTransition:
86+
(@JvmSuppressWildcards
87+
AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition) =
88+
{
89+
fadeOut(animationSpec = tween(700))
90+
},
91+
popEnterTransition:
92+
(@JvmSuppressWildcards
93+
AnimatedContentTransitionScope<NavBackStackEntry>.() -> EnterTransition) =
94+
enterTransition,
95+
popExitTransition:
96+
(@JvmSuppressWildcards
97+
AnimatedContentTransitionScope<NavBackStackEntry>.() -> ExitTransition) =
98+
exitTransition,
99+
sizeTransform:
100+
(@JvmSuppressWildcards
101+
AnimatedContentTransitionScope<NavBackStackEntry>.() -> SizeTransform?)? =
102+
null,
67103
) {
68104
val navHostController = rememberNavController()
69105

@@ -114,6 +150,11 @@ fun NavigationView(
114150
modifier = modifier,
115151
navController = navHostController,
116152
startDestination = destinations.first().id.name,
153+
enterTransition = enterTransition,
154+
exitTransition = exitTransition,
155+
popEnterTransition = popEnterTransition,
156+
popExitTransition = popExitTransition,
157+
sizeTransform = sizeTransform,
117158
) {
118159
create(destinations, navigation)
119160
}

Diff for: navigation/src/main/java/no/nordicsemi/android/common/navigation/internal/NavController+Bundle.kt

+2-9
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ package no.nordicsemi.android.common.navigation.internal
3333

3434
import android.annotation.SuppressLint
3535
import android.os.Bundle
36-
import androidx.core.net.toUri
3736
import androidx.navigation.*
3837

3938
//FIXME Fix NavGraph methods() can only be called from within the same library group.
@@ -45,14 +44,8 @@ internal fun NavController.navigate(
4544
navOptions: NavOptions? = null,
4645
navigatorExtras: Navigator.Extras? = null
4746
) {
48-
val routeLink = NavDeepLinkRequest
49-
.Builder
50-
.fromUri(NavDestination.createRoute(route).toUri())
51-
.build()
52-
53-
val deepLinkMatch = graph.matchDeepLink(routeLink)
54-
if (deepLinkMatch != null) {
55-
val destination = deepLinkMatch.destination
47+
val destination = findDestination(route)
48+
if (destination != null) {
5649
val id = destination.id
5750
navigate(id, args, navOptions, navigatorExtras)
5851
} else {

0 commit comments

Comments
 (0)