mattinger
08/27/2021, 3:27 PMIan Lake
08/27/2021, 4:00 PMcomposable
, you could create your own wrapper:
fun NavGraphBuilder.loggingComposable(
route: String,
arguments: List<NamedNavArgument> = emptyList(),
deepLinks: List<NavDeepLink> = emptyList(),
content: @Composable (NavBackStackEntry) -> Unit
) = composable(route, arguments, deepLinks) { backStackEntry ->
// Logging
val lifecycle = backStackEntry.lifecycle
DisposableEffect(lifecycle) {
val observer = LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) {
// log resumed
} else if (event == Lifecycle.Event.ON_PAUSE) {
// log paused
}
}
lifecycle.addObserver(observer)
onDispose {
lifecycle.removeObserver(observer)
}
}
// And your actual screen content
content(backStackEntry)
}
Colton Idle
08/30/2021, 3:07 AM