Skip to content

Commit 62a7732

Browse files
committed
Save the showSettingsDialog flag in instance state
This prevents the settings dialog from being dismissed when the device is rotated.
1 parent 825c329 commit 62a7732

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616

1717
package com.google.samples.apps.nowinandroid.ui
18-
1918
import androidx.compose.foundation.layout.Column
2019
import androidx.compose.foundation.layout.ExperimentalLayoutApi
2120
import androidx.compose.foundation.layout.Row
@@ -41,7 +40,10 @@ import androidx.compose.material3.windowsizeclass.WindowSizeClass
4140
import androidx.compose.runtime.Composable
4241
import androidx.compose.runtime.LaunchedEffect
4342
import androidx.compose.runtime.getValue
43+
import androidx.compose.runtime.mutableStateOf
4444
import androidx.compose.runtime.remember
45+
import androidx.compose.runtime.saveable.rememberSaveable
46+
import androidx.compose.runtime.setValue
4547
import androidx.compose.ui.ExperimentalComposeUiApi
4648
import androidx.compose.ui.Modifier
4749
import androidx.compose.ui.draw.drawWithContent
@@ -94,6 +96,9 @@ fun NiaApp(
9496
) {
9597
val shouldShowGradientBackground =
9698
appState.currentTopLevelDestination == TopLevelDestination.FOR_YOU
99+
var showSettingsDialog by rememberSaveable {
100+
mutableStateOf(false)
101+
}
97102

98103
NiaBackground {
99104
NiaGradientBackground(
@@ -118,9 +123,9 @@ fun NiaApp(
118123
}
119124
}
120125

121-
if (appState.shouldShowSettingsDialog) {
126+
if (showSettingsDialog) {
122127
SettingsDialog(
123-
onDismiss = { appState.setShowSettingsDialog(false) },
128+
onDismiss = { showSettingsDialog = false },
124129
)
125130
}
126131

@@ -184,7 +189,7 @@ fun NiaApp(
184189
colors = TopAppBarDefaults.centerAlignedTopAppBarColors(
185190
containerColor = Color.Transparent,
186191
),
187-
onActionClick = { appState.setShowSettingsDialog(true) },
192+
onActionClick = { showSettingsDialog = true },
188193
onNavigationClick = { appState.navigateToSearch() },
189194
)
190195
}

app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaAppState.kt

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@ import androidx.compose.material3.windowsizeclass.WindowSizeClass
2020
import androidx.compose.material3.windowsizeclass.WindowWidthSizeClass
2121
import androidx.compose.runtime.Composable
2222
import androidx.compose.runtime.Stable
23-
import androidx.compose.runtime.getValue
24-
import androidx.compose.runtime.mutableStateOf
2523
import androidx.compose.runtime.remember
2624
import androidx.compose.runtime.rememberCoroutineScope
27-
import androidx.compose.runtime.setValue
2825
import androidx.navigation.NavController
2926
import androidx.navigation.NavDestination
3027
import androidx.navigation.NavGraph.Companion.findStartDestination
@@ -100,9 +97,6 @@ class NiaAppState(
10097
else -> null
10198
}
10299

103-
var shouldShowSettingsDialog by mutableStateOf(false)
104-
private set
105-
106100
val shouldShowBottomBar: Boolean
107101
get() = windowSizeClass.widthSizeClass == WindowWidthSizeClass.Compact
108102

@@ -170,10 +164,6 @@ class NiaAppState(
170164
}
171165
}
172166

173-
fun setShowSettingsDialog(shouldShow: Boolean) {
174-
shouldShowSettingsDialog = shouldShow
175-
}
176-
177167
fun navigateToSearch() {
178168
navController.navigateToSearch()
179169
}

0 commit comments

Comments
 (0)