A -> B -> C -> D -> E -> F 순서로 화면을 이동했을 때, F에서 back 버튼을 누르면 바로 A로 가고 싶을 때가 있다. navController.popBackStack(B, true)
같은 걸 이용해도 되지만, 만약 A -> C -> D -> E -> F 로 이동했다면?
이럴 때는 A와 F 사이의 모든 화면을 지워버리는 방법이 있다.
LaunchedEffect(Unit) { with(navController) { val fromIndex = backQueue.indexOfLast { it.destination.route == "A" } + 1 val toIndex = backQueue.indexOf(navController.currentBackStackEntry) backQueue.subList(fromIndex, toIndex).clear() } }
F 화면에서 이걸 호출하면 [A, B, C, D, E, F] -> [A, F]
로 돼서 back 버튼을 누르면 바로 A로 이동할 수 있다.
만약 A -> C -> D -> E -> F
로 이동했고, B ~ E
를 지우고 싶어서 B
를 찾으면 fromIndex가 0인지 -1인지
가 나와서 모든 화면이 사라져서 back을 하면 흰 화면만 나오니 주의 필요