Skip to content

Commit 0f07358

Browse files
committed
modal sheet: fix transition with a default bg
1 parent 8def217 commit 0f07358

File tree

4 files changed

+24
-16
lines changed

4 files changed

+24
-16
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.hrach.navigation.demo
22

3+
import androidx.compose.material3.MaterialTheme
34
import androidx.compose.runtime.Composable
45
import androidx.navigation.NavHostController
56
import androidx.navigation.compose.NavHost
@@ -34,6 +35,6 @@ internal fun NavHost(
3435
modalSheet<Destinations.Modal2> { Modal2() }
3536
bottomSheet<Destinations.BottomSheet> { BottomSheet(navController) }
3637
}
37-
ModalSheetHost(modalSheetNavigator)
38+
ModalSheetHost(modalSheetNavigator, containerColor = MaterialTheme.colorScheme.background)
3839
BottomSheetHost(bottomSheetNavigator)
3940
}

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

+16-13
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package dev.hrach.navigation.demo.screens
22

33
import android.annotation.SuppressLint
4-
import androidx.compose.foundation.background
54
import androidx.compose.foundation.layout.Column
65
import androidx.compose.foundation.layout.WindowInsets
76
import androidx.compose.foundation.layout.fillMaxSize
87
import androidx.compose.foundation.layout.systemBars
98
import androidx.compose.foundation.layout.windowInsetsPadding
109
import androidx.compose.material3.MaterialTheme
1110
import androidx.compose.material3.OutlinedButton
11+
import androidx.compose.material3.Surface
1212
import androidx.compose.material3.Text
1313
import androidx.compose.runtime.Composable
1414
import androidx.compose.runtime.getValue
@@ -42,19 +42,22 @@ private fun Modal1(
4242
navigate: (Any) -> Unit,
4343
bottomSheetResult: Int,
4444
) {
45-
Column(
46-
Modifier
47-
.fillMaxSize()
48-
.background(MaterialTheme.colorScheme.surface)
49-
.windowInsetsPadding(WindowInsets.systemBars),
45+
Surface(
46+
color = MaterialTheme.colorScheme.inverseSurface,
5047
) {
51-
Text("Modal 1")
52-
OutlinedButton(onClick = { navigate(Destinations.Modal2) }) {
53-
Text("Modal 2")
48+
Column(
49+
modifier = Modifier
50+
.fillMaxSize()
51+
.windowInsetsPadding(WindowInsets.systemBars),
52+
) {
53+
Text("Modal 1")
54+
OutlinedButton(onClick = { navigate(Destinations.Modal2) }) {
55+
Text("Modal 2")
56+
}
57+
OutlinedButton(onClick = { navigate(Destinations.BottomSheet) }) {
58+
Text("BottomSheet")
59+
}
60+
Text("BottomSheetResult: $bottomSheetResult")
5461
}
55-
OutlinedButton(onClick = { navigate(Destinations.BottomSheet) }) {
56-
Text("BottomSheet")
57-
}
58-
Text("BottomSheetResult: $bottomSheetResult")
5962
}
6063
}

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

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.animation.core.tween
1010
import androidx.compose.animation.core.updateTransition
1111
import androidx.compose.animation.fadeIn
1212
import androidx.compose.animation.fadeOut
13+
import androidx.compose.foundation.background
1314
import androidx.compose.foundation.layout.Box
1415
import androidx.compose.foundation.layout.fillMaxSize
1516
import androidx.compose.runtime.Composable
@@ -26,6 +27,7 @@ import androidx.compose.runtime.setValue
2627
import androidx.compose.runtime.snapshots.SnapshotStateList
2728
import androidx.compose.ui.Alignment
2829
import androidx.compose.ui.Modifier
30+
import androidx.compose.ui.graphics.Color
2931
import androidx.compose.ui.platform.LocalInspectionMode
3032
import androidx.compose.ui.window.SecureFlagPolicy
3133
import androidx.lifecycle.Lifecycle
@@ -39,6 +41,7 @@ import kotlinx.coroutines.CancellationException
3941
@Composable
4042
public fun ModalSheetHost(
4143
modalSheetNavigator: ModalSheetNavigator,
44+
containerColor: Color,
4245
modifier: Modifier = Modifier,
4346
enterTransition: (AnimatedContentTransitionScope<NavBackStackEntry>.() -> @JvmSuppressWildcards EnterTransition) =
4447
{ fadeIn(animationSpec = tween(700)) },
@@ -134,7 +137,8 @@ public fun ModalSheetHost(
134137
securePolicy = securePolicy,
135138
) {
136139
transition.AnimatedContent(
137-
modifier = modifier,
140+
modifier = modifier
141+
.background(if (transition.targetState == null) Color.Unspecified else containerColor),
138142
contentAlignment = Alignment.TopStart,
139143
transitionSpec = block@{
140144
val initialState = initialState ?: return@block ContentTransform(

readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ NavHost(
3737
modalSheet<Destinations.Modal> { Modal(navController) }
3838
bottomSheet<Destinations.BottomSheet> { BottomSheet(navController) }
3939
}
40-
ModalSheetHost(modalSheetNavigator)
40+
ModalSheetHost(modalSheetNavigator, containerColor = MaterialTheme.colorScheme.background)
4141
BottomSheetHost(bottomSheetNavigator)
4242
```
4343

0 commit comments

Comments
 (0)