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 hasToken = !token.isNullOrBlank()
|
||||||
val startScreen: NavKey = if (hasToken) ChatScreen else LandingScreen
|
val startScreen: NavKey = if (hasToken) ChatScreen else LandingScreen
|
||||||
|
|
||||||
val backStack = remember { NavBackStack(startScreen) }
|
val backStack = remember(startScreen) { NavBackStack(startScreen) }
|
||||||
LaunchedEffect(startScreen) {
|
|
||||||
if (backStack.lastOrNull() != startScreen) {
|
|
||||||
backStack.clear()
|
|
||||||
backStack.add(startScreen)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
NavigationController.backStack = backStack
|
NavigationController.backStack = backStack
|
||||||
|
|
||||||
val currentScreen = backStack.lastOrNull() ?: startScreen
|
val currentScreen = backStack.lastOrNull() ?: startScreen
|
||||||
|
|||||||
Reference in new issue
Block a user