nuhkoca
07/09/2022, 11:43 AMnuhkoca
07/09/2022, 11:43 AMnuhkoca
07/09/2022, 11:44 AMfun navigateToBottomBarRoute(route: String) {
if (route != currentRoute) {
navController.navigate(route) {
launchSingleTop = true
restoreState = true
// Pop up backstack to the first destination and save state. This makes going back
// to the start destination when pressing back in any other bottom tab.
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
}
}
}
nuhkoca
07/09/2022, 11:44 AMprivate fun NavGraphBuilder.btAppGraph(appState: BTAppState) {
composable(Screen.Splash.route) {
SplashScreen { isLoggedIn ->
val route = if (isLoggedIn) Screen.Home.route else Screen.Login.route
appState.clearAndNavigate(route)
}
}
composable(Screen.Login.route) {
LoginScreen { appState.navigateAndPopUp(Screen.Home.route, Screen.Login.route) }
}
navigation(
route = Screen.Home.route,
startDestination = HomeSections.Tasks.route
) {
addHomeGraph(
onLogout = { appState.navigateAndPopUp(Screen.Login.route, Screen.Home.route) }
)
}
}
nuhkoca
07/09/2022, 11:44 AMfun NavGraphBuilder.addHomeGraph(
onLogout: () -> Unit
) {
composable(HomeSections.Tasks.route) {
TaskListScreen()
}
composable(HomeSections.TaskApproval.route) {
TaskListScreen()
}
composable(HomeSections.Profile.route) {
ProfileScreen(onLogout = onLogout)
}
}
nuhkoca
07/09/2022, 11:45 AMbottomBar = {
if (appState.shouldShowBottomBar) {
BTBottomBar(
tabs = appState.bottomBarTabs,
currentRoute = appState.currentRoute!!,
navigateToRoute = appState::navigateToBottomBarRoute
)
}
},
nuhkoca
07/09/2022, 11:47 AMhiltViewModel()
dewildte
07/09/2022, 2:17 PMIan Lake
07/09/2022, 2:53 PMnuhkoca
07/09/2022, 6:48 PMnuhkoca
07/09/2022, 8:32 PM@Composable
@ReadOnlyComposable
fun resources(): Resources {
LocalConfiguration.current
return LocalContext.current.resources
}
private fun NavGraphBuilder.btAppGraph(appState: BTAppState) {
navigation(
route = Screen.Home.route,
startDestination = HomeSections.Tasks.route
) {
composable(Screen.Splash.route) {
SplashScreen { isLoggedIn ->
val route = if (isLoggedIn) Screen.Home.route else Screen.Login.route
appState.clearAndNavigate(route)
}
}
composable(Screen.Login.route) {
LoginScreen { appState.navigateAndPopUp(Screen.Home.route, Screen.Login.route) }
}
addHomeGraph(
onLogout = { appState.navigateAndPopUp(Screen.Login.route, Screen.Home.route) }
)
}
}
NavHost(
modifier = Modifier.padding(it),
navController = appState.navController,
startDestination = Screen.Home.route
) { btAppGraph(appState) }
nuhkoca
07/09/2022, 8:32 PM