Replace LaunchedEffect(startScreen) pattern with remember(startScreen) keyed recreation of NavBackStack. Mutating the same NavBackStack by clearing and re-adding entries confuses Navigation3's internal state, causing duplicate screen entries that compete for touch events. The fix creates a fresh NavBackStack whenever startScreen changes (chat -> landing), avoiding any stale-state mutation issues. Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
7811a35d29
commit
970f4bfe7c
1 file changed
+1
-7
@@ -111,13 +111,7 @@ fun MainNavigation(sessionId: String? = null) {
|
||||
val hasToken = !token.isNullOrBlank()
|
||||
val startScreen: NavKey = if (hasToken) ChatScreen else LandingScreen
|
||||
|
||||
val backStack = remember { NavBackStack(startScreen) }
|
||||
LaunchedEffect(startScreen) {
|
||||
if (backStack.lastOrNull() != startScreen) {
|
||||
backStack.clear()
|
||||
backStack.add(startScreen)
|
||||
}
|
||||
}
|
||||
val backStack = remember(startScreen) { NavBackStack(startScreen) }
|
||||
NavigationController.backStack = backStack
|
||||
|
||||
val currentScreen = backStack.lastOrNull() ?: startScreen
|
||||
|
||||
Reference in new issue
Block a user