Fix bottombar selected item.
This commit is contained in:
parent
747d5576ab
commit
82b6c49787
1 changed files with 5 additions and 12 deletions
|
|
@ -15,10 +15,7 @@ import androidx.compose.material3.TopAppBar
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.Stable
|
||||
import androidx.compose.runtime.derivedStateOf
|
||||
import androidx.compose.runtime.mutableIntStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
import androidx.compose.runtime.staticCompositionLocalOf
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.painterResource
|
||||
|
|
@ -26,6 +23,7 @@ import androidx.compose.ui.res.stringResource
|
|||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavHostController
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.currentBackStackEntryAsState
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import com.pixelized.rplexicon.LocalSnack
|
||||
import com.pixelized.rplexicon.R
|
||||
|
|
@ -56,6 +54,8 @@ fun HomeNavHost(
|
|||
CompositionLocalProvider(
|
||||
LocalSnack provides remember { SnackbarHostState() },
|
||||
) {
|
||||
val backStackEntry = navHostController.currentBackStackEntryAsState()
|
||||
|
||||
Scaffold(
|
||||
topBar = {
|
||||
TopAppBar(
|
||||
|
|
@ -70,21 +70,14 @@ fun HomeNavHost(
|
|||
)
|
||||
},
|
||||
bottomBar = {
|
||||
val selectedIndex = rememberSaveable {
|
||||
mutableIntStateOf(bottomBarItems.indexOfFirst { it.route == startDestination })
|
||||
}
|
||||
BottomAppBar(
|
||||
containerColor = MaterialTheme.colorScheme.surface,
|
||||
tonalElevation = 0.dp,
|
||||
) {
|
||||
bottomBarItems.forEachIndexed { index, item ->
|
||||
val selectedItem = remember {
|
||||
derivedStateOf { selectedIndex.value == index }
|
||||
}
|
||||
bottomBarItems.forEach { item ->
|
||||
NavigationBarItem(
|
||||
selected = selectedItem.value,
|
||||
selected = item.route == backStackEntry.value?.destination?.route,
|
||||
onClick = {
|
||||
selectedIndex.value = index
|
||||
item.onClick.invoke()
|
||||
},
|
||||
label = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue