Wie kann ich den aufgehobenen Zustand meiner TopAppbar pro Ziel aktualisieren?Android

Forum für diejenigen, die für Android programmieren
Anonymous
 Wie kann ich den aufgehobenen Zustand meiner TopAppbar pro Ziel aktualisieren?

Post by Anonymous »

Ich habe eine Navigationsleiste mit einem Navhost mit zwei Zielen:

Code: Select all

@Serializable
object Training

@Serializable
object Statistics

data class TopLevelRoute(val name: String, val route: T, val icon: ImageVector)

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun HomeScreen() {

val topLevelRoutes = listOf(
TopLevelRoute("Training", Training, Icons.Default.Lightbulb),
TopLevelRoute("Statistics", Statistics, Icons.Default.AutoGraph)
)

val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
val navController = rememberNavController()

Scaffold(
modifier = Modifier
.fillMaxSize()
.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
CenterAlignedTopAppBar(
scrollBehavior = scrollBehavior,
title = {
Text("Title")
}
)
},
bottomBar = {
NavigationBar {
val navBackStackEntry by navController.currentBackStackEntryAsState()
val currentDestination = navBackStackEntry?.destination
topLevelRoutes.forEach { topLevelRoute ->
NavigationBarItem(
icon = { Icon(topLevelRoute.icon, contentDescription = topLevelRoute.name) },
label = { Text(topLevelRoute.name) },
selected = currentDestination?.hierarchy?.any { it.hasRoute(topLevelRoute.route::class) } == true,
onClick = {
navController.navigate(topLevelRoute.route) {
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
launchSingleTop = true
restoreState = true
}
}
)
}
}
}
) { innerPadding ->
NavHost(navController, startDestination = Training, Modifier.padding(innerPadding)) {
composable {
Text("Training")
}
composable {
StatisticsScreen()
}
}
}
}

@Composable
fun StatisticsScreen() {
LazyColumn {
items(50) {
Text(modifier = Modifier.fillMaxWidth(), text = "Item $it")
}
}
}
Ich verwende einen PinnedScrollBehavior , damit der CenteralignedTopAppbar nach dem Inhalt darunter aufgehoben wird. Das Problem, das ich habe, ist, dass der aufgehobene Zustand nicht pro Ort aktualisiert wird. Sobald ich zu einem nicht -krollbaren Standort wechselt, bleibt der centeralignedTopappbar aufgehoben. Dies?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post