82 lines
3.0 KiB
Kotlin
82 lines
3.0 KiB
Kotlin
package com.example.myapplication.Navbar
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.content.Context
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.rememberScrollState
|
|
import androidx.compose.foundation.verticalScroll
|
|
import androidx.compose.material.BottomNavigation
|
|
import androidx.compose.material.BottomNavigationItem
|
|
import androidx.compose.material.icons.Icons
|
|
import androidx.compose.material.icons.filled.AccountBox
|
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
|
import androidx.compose.material3.Icon
|
|
import androidx.compose.material3.MaterialTheme
|
|
import androidx.compose.material3.Scaffold
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.ControlledComposition
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.compose.ui.tooling.preview.Preview
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.navigation.NavDestination.Companion.hierarchy
|
|
import androidx.navigation.NavGraph.Companion.findStartDestination
|
|
import androidx.navigation.compose.NavHost
|
|
import androidx.navigation.compose.currentBackStackEntryAsState
|
|
import androidx.navigation.compose.rememberNavController
|
|
import com.example.myapplication.ui.theme.BlueNavbar
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
@SuppressLint("UnusedMaterialScaffoldPaddingParameter")
|
|
@Composable
|
|
fun NavBar(){
|
|
val navController = rememberNavController()
|
|
val items = listOf(
|
|
NavItem.Basket,
|
|
NavItem.ListOfServices,
|
|
NavItem.Profile
|
|
)
|
|
|
|
Scaffold(bottomBar = {
|
|
BottomNavigation(
|
|
backgroundColor = BlueNavbar
|
|
){
|
|
val navBackStackEntry by navController.currentBackStackEntryAsState()
|
|
val currentDestination = navBackStackEntry?.destination
|
|
|
|
items.forEach { screen ->
|
|
BottomNavigationItem(
|
|
icon = { ContextCompat.getDrawable(LocalContext.current, screen.icon)},
|
|
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
|
|
}
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}){paddingValues ->
|
|
Column(modifier = Modifier
|
|
.fillMaxSize()
|
|
.padding(bottom = paddingValues.calculateBottomPadding())
|
|
.verticalScroll(rememberScrollState())) {
|
|
}
|
|
NavController(navController = navController)
|
|
}
|
|
}
|
|
|
|
@Composable
|
|
@Preview
|
|
fun NavigatePreview(){
|
|
NavBar()
|
|
} |