Fix bottombar selected item.

This commit is contained in:
Thomas Andres Gomez 2023-09-08 19:49:42 +02:00
parent 747d5576ab
commit 82b6c49787

View file

@ -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 = {