@@ -20,21 +20,30 @@ import androidx.activity.compose.BackHandler
2020import androidx.compose.material3.Icon
2121import androidx.compose.material3.Text
2222import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi
23+ import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
24+ import androidx.compose.material3.adaptive.currentWindowSize
2325import androidx.compose.material3.adaptive.layout.AnimatedPane
2426import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold
2527import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole
2628import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
2729import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffold
30+ import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults
31+ import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteType
2832import androidx.compose.runtime.Composable
2933import androidx.compose.runtime.getValue
3034import androidx.compose.runtime.mutableStateOf
3135import androidx.compose.runtime.remember
3236import androidx.compose.runtime.setValue
37+ import androidx.compose.ui.platform.LocalDensity
3338import androidx.compose.ui.res.stringResource
39+ import androidx.compose.ui.unit.dp
40+ import androidx.compose.ui.unit.toSize
3441import androidx.window.core.layout.WindowWidthSizeClass
3542import com.example.reply.data.Email
3643import com.example.reply.ui.utils.DevicePosture
3744
45+ private val WINDOW_WIDTH_LARGE = 1200 .dp
46+
3847@Composable
3948fun ReplyApp (
4049 windowSize : WindowWidthSizeClass ,
@@ -57,6 +66,18 @@ private fun ReplyNavigationWrapperUI(
5766 var selectedDestination: ReplyDestination by remember {
5867 mutableStateOf(ReplyDestination .Inbox )
5968 }
69+
70+ val windowSize = with (LocalDensity .current) {
71+ currentWindowSize().toSize().toDpSize()
72+ }
73+ val navLayoutType = if (windowSize.width >= WINDOW_WIDTH_LARGE ) {
74+ // Show a permanent drawer when window width is large.
75+ NavigationSuiteType .NavigationDrawer
76+ } else {
77+ // Otherwise use the default from NavigationSuiteScaffold.
78+ NavigationSuiteScaffoldDefaults .calculateFromAdaptiveInfo(currentWindowAdaptiveInfo())
79+ }
80+
6081 NavigationSuiteScaffold (
6182 navigationSuiteItems = {
6283 ReplyDestination .entries.forEach {
@@ -67,7 +88,8 @@ private fun ReplyNavigationWrapperUI(
6788 onClick = { /* TODO update selection*/ },
6889 )
6990 }
70- }
91+ },
92+ layoutType = navLayoutType
7193 ) {
7294 content()
7395 }
0 commit comments