Navigation

This commit is contained in:
sathwikcs
2024-10-16 17:50:49 +05:30
parent bbbbb460ad
commit 9f4c4c7057
2 changed files with 58 additions and 9 deletions

View File

@@ -1,5 +1,7 @@
package `in`.sminnovations.attendanceapp
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.compose.runtime.Composable
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavHostController
@@ -7,34 +9,33 @@ import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import `in`.sminnovations.attendanceapp.screens.login.ui.LoginScreen
import `in`.sminnovations.attendanceapp.screens.home.navigationDrawer.ui.NavigationDrawer
@Composable
fun AppNavigation() {
val navController = rememberNavController()
NavigationHost(navController = navController)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
NavigationHost(navController = navController)
}
}
@RequiresApi(Build.VERSION_CODES.O_MR1)
@Composable
fun NavigationHost(navController: NavHostController) {
NavHost(navController = navController, startDestination = "login") {
// Login Screen Route
composable("login") {
LoginScreen(
loginViewModel = hiltViewModel(),
onLoginSuccess = {
// Navigate to the home screen after login success
navController.navigate("home") {
// Pop the login screen from the back stack
navController.navigate("main") {
popUpTo("login") { inclusive = true }
}
}
)
}
composable("home") {
NavigationDrawer()
composable("main") {
MainScreen()
}
}
}

View File

@@ -0,0 +1,48 @@
package `in`.sminnovations.attendanceapp.navigation
import androidx.compose.material3.NavigationBar
import androidx.compose.material3.NavigationBarItem
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.navigation.NavController
import androidx.navigation.compose.currentBackStackEntryAsState
import `in`.sminnovations.attendanceapp.navigation.data.BottomNavItem
@Composable
fun BottomNavigationBar(
navController: NavController,
items: List<BottomNavItem>,
) {
NavigationBar {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentRoute = navBackStackEntry?.destination?.route
items.forEach { item ->
NavigationBarItem(icon = {
BottomNavAnimatedIcon(
isSelected = currentRoute == item.route,
icon = item.icon,
selectedIcon = item.selectedIcon,
contentDescription = item.label
)
},
label = { Text(text = item.label) },
alwaysShowLabel = true,
selected = currentRoute == item.route,
onClick = {
navController.navigate(item.route) {
navController.graph.startDestinationRoute?.let { route ->
popUpTo(route) {
saveState = true
}
}
launchSingleTop = true
restoreState = true
}
})
}
}
}