bottomNavBar fini

android
Patrick BRUGIERE 1 year ago
parent a8cffafe16
commit de4354dd55

@ -0,0 +1,23 @@
package sae.android.sae_2a.data
import androidx.annotation.StringRes
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AccountBox
import androidx.compose.material.icons.filled.Home
import androidx.compose.material.icons.filled.Menu
import androidx.compose.ui.graphics.vector.ImageVector
import sae.android.sae_2a.R
sealed class Screen(val route: String, @StringRes val resourceId: Int, val image: ImageVector) {
object Profile : Screen("profile", R.string.profilePicture, Icons.Filled.AccountBox )
object Home : Screen("profileScreen", R.string.home, Icons.Filled.Home )
object VocabularyList : Screen("VocabularyListScreen", R.string.voc_image_description, Icons.Filled.Menu)
object Game : Screen("GameScreen", R.string.game ,Icons.Filled.Home)
object Register : Screen("RegisterScreen", R.string.register,Icons.Filled.Home )
object Login : Screen("LoginScreen", R.string.logIn , Icons.Filled.Home)
}

@ -12,8 +12,6 @@ import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.material.BottomNavigation
import androidx.compose.material.BottomNavigationItem
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.Scaffold
@ -37,11 +35,13 @@ import androidx.navigation.compose.composable
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import sae.android.sae_2a.R
import sae.android.sae_2a.data.Screen
import sae.android.sae_2a.game.VocabularyScreen
val items = listOf(
Screen.Game,
Screen.VocabularyList,
Screen.Game
Screen.Profile
)
@ -50,44 +50,49 @@ val items = listOf(
fun MyApp() {
val navController = rememberNavController()
Scaffold(
bottomBar = {
BottomNavigation {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
items.forEach { screen ->
BottomNavigationItem(
label = { Text(stringResource(screen.resourceId)) },
selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true,
onClick = {
navController.navigate(screen.route) {
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
},
icon = {
Icon(
Icons.Filled.Favorite, contentDescription = null
)
})
}
}
}
){ innerPadding ->
NavHost(navController, startDestination = Screen.Home.route, Modifier.padding(innerPadding)) {
composable(Screen.Home.route) { HomeScreen( NavigateToRegister = { navController.navigate(Screen.Register.route)} ,NavigateToLogin = { navController.navigate(Screen.Game.route) }) }
composable(Screen.VocabularyList.route) { VocabularyScreen(onNavigateToList = { navController.popBackStack() }) }
composable(Screen.Register.route) { RegisterScreen(NavigateToApp = { navController.navigate(Screen.VocabularyList.route) }) }
composable(Screen.Game.route){ GameScreen() {
} }
bottomBar = {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
if (currentDestination?.route !in listOf(Screen.Home.route, Screen.Login.route , Screen.Register.route)) {
BottomNavigation {
items.forEach { screen ->
BottomNavigationItem(
modifier = Modifier
.background(Color.Gray),
label = { Text(stringResource(screen.resourceId)) },
selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true,
onClick = {
navController.navigate(screen.route) {
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
},
icon = {
Icon(
screen.image , contentDescription = null
)
})
}
}
}
}
) { innerPadding ->
NavHost(navController, startDestination = Screen.Home.route, Modifier.padding(innerPadding)) {
composable(Screen.Home.route) { HomeScreen(NavigateToRegister = { navController.navigate(
Screen.Register.route) }, NavigateToLogin = { navController.navigate(Screen.Login.route) }) }
composable(Screen.VocabularyList.route) { VocabularyScreen(onNavigateToList = { navController.popBackStack() }) }
composable(Screen.Register.route) { RegisterScreen(NavigateToApp = { navController.navigate(
Screen.VocabularyList.route) }) }
composable(Screen.Game.route){ GameScreen() {} }
composable(Screen.Login.route){LoginScreen(onLoginClicked = { _, _ -> })}
composable(Screen.Profile.route){profileScreen()}
}
}
}
}
@Composable
fun HomeScreen(NavigateToRegister: () -> Unit,NavigateToLogin: () -> Unit ){

@ -1,16 +0,0 @@
package sae.android.sae_2a.view
import androidx.annotation.StringRes
import sae.android.sae_2a.R
sealed class Screen(val route: String, @StringRes val resourceId: Int) {
object Profile : Screen("profile", R.string.profilePicture)
object Home : Screen("HomeScreen", R.string.home)
object VocabularyList : Screen("VocabularyListScreen", R.string.voc_image_description)
object Game : Screen("GameScreen", R.string.game)
object Register : Screen("RegisterScreen", R.string.register)
}

@ -6,7 +6,7 @@
<string name="logOut">Log Out</string>
<string name="signIn">Sign In</string>
<string name="password">Password</string>
<string name="voc_image_description">Picture representing vocabulary</string>
<string name="voc_image_description">Vocabulary</string>
<string name="created_by">Created by\u0020</string>
<string name="unknown">Unknown</string>
<string name="profilePicture">Profile Picture</string>

Loading…
Cancel
Save