Skip to content

Commit 5979f34

Browse files
committed
correctly finsh transitions when popping more modalsheets at once
1 parent 3903437 commit 5979f34

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

demo/src/main/kotlin/dev/hrach/navigation/demo/NavHost.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ internal fun NavHost(
5555
composable<Destinations.List> { List() }
5656
composable<Destinations.Profile> { Profile() }
5757
modalSheet<Destinations.Modal1> { Modal1(navController) }
58-
modalSheet<Destinations.Modal2> { Modal2() }
58+
modalSheet<Destinations.Modal2> { Modal2(navController) }
5959
bottomSheet<Destinations.BottomSheet> { BottomSheet(navController) }
6060
}
6161
ModalSheetHost(

demo/src/main/kotlin/dev/hrach/navigation/demo/screens/Modal2.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,38 @@ package dev.hrach.navigation.demo.screens
22

33
import androidx.compose.foundation.background
44
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.Spacer
56
import androidx.compose.foundation.layout.WindowInsets
67
import androidx.compose.foundation.layout.fillMaxSize
8+
import androidx.compose.foundation.layout.height
79
import androidx.compose.foundation.layout.systemBars
810
import androidx.compose.foundation.layout.windowInsetsPadding
911
import androidx.compose.material3.MaterialTheme
12+
import androidx.compose.material3.OutlinedButton
1013
import androidx.compose.material3.Text
1114
import androidx.compose.runtime.Composable
1215
import androidx.compose.ui.Modifier
16+
import androidx.compose.ui.unit.dp
17+
import androidx.navigation.NavController
18+
import dev.hrach.navigation.demo.Destinations
1319

1420
@Composable
15-
internal fun Modal2() {
21+
internal fun Modal2(navController: NavController) {
1622
Column(
1723
Modifier
1824
.fillMaxSize()
1925
.background(MaterialTheme.colorScheme.surface)
2026
.windowInsetsPadding(WindowInsets.systemBars),
2127
) {
2228
Text("Modal 2")
29+
30+
Spacer(Modifier.height(32.dp))
31+
OutlinedButton(
32+
onClick = {
33+
navController.popBackStack<Destinations.Modal1>(inclusive = true)
34+
},
35+
) {
36+
Text("Close modals")
37+
}
2338
}
2439
}

modalsheet/src/main/kotlin/dev/hrach/navigation/modalsheet/ModalSheetHost.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,8 @@ public fun ModalSheetHost(
227227
}
228228
}
229229
LaunchedEffect(transition.currentState, transition.targetState) {
230-
if (transition.currentState == transition.targetState && backStackEntry != null) {
231-
modalSheetNavigator.onTransitionComplete(backStackEntry)
230+
if (transition.currentState == transition.targetState) {
231+
transitionsInProgress.forEach { entry -> modalSheetNavigator.onTransitionComplete(entry) }
232232
zIndices
233233
.filter { it.key != transition.targetState?.id }
234234
.forEach { zIndices.remove(it.key) }

0 commit comments

Comments
 (0)