@@ -34,7 +34,6 @@ import androidx.compose.foundation.layout.padding
3434import androidx.compose.foundation.lazy.LazyColumn
3535import androidx.compose.foundation.lazy.itemsIndexed
3636import androidx.compose.foundation.text.input.TextFieldState
37- import androidx.compose.foundation.text.input.rememberTextFieldState
3837import androidx.compose.material3.ExperimentalMaterial3Api
3938import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
4039import androidx.compose.material3.Icon
@@ -43,12 +42,12 @@ import androidx.compose.material3.SliderState
4342import androidx.compose.material3.Text
4443import androidx.compose.material3.TopAppBar
4544import androidx.compose.material3.TopAppBarDefaults
46- import androidx.compose.material3.rememberSliderState
4745import androidx.compose.runtime.Composable
4846import androidx.compose.runtime.DisposableEffect
4947import androidx.compose.runtime.getValue
5048import androidx.compose.runtime.remember
5149import androidx.compose.runtime.saveable.rememberSaveable
50+ import androidx.compose.runtime.snapshots.SnapshotStateList
5251import androidx.compose.ui.Alignment
5352import androidx.compose.ui.Modifier
5453import androidx.compose.ui.graphics.Color
@@ -57,14 +56,11 @@ import androidx.compose.ui.platform.LocalContext
5756import androidx.compose.ui.res.painterResource
5857import androidx.compose.ui.res.stringResource
5958import androidx.compose.ui.text.style.TextOverflow
60- import androidx.compose.ui.tooling.preview.Devices
61- import androidx.compose.ui.tooling.preview.Preview
6259import androidx.compose.ui.unit.dp
6360import androidx.compose.ui.unit.sp
6461import androidx.lifecycle.compose.collectAsStateWithLifecycle
6562import androidx.lifecycle.viewmodel.compose.viewModel
6663import androidx.navigation3.runtime.entryProvider
67- import androidx.navigation3.runtime.rememberNavBackStack
6864import androidx.navigation3.ui.NavDisplay
6965import org.nsh07.pomodoro.R
7066import org.nsh07.pomodoro.service.TimerService
@@ -79,7 +75,6 @@ import org.nsh07.pomodoro.ui.settingsScreen.viewModel.SettingsViewModel
7975import org.nsh07.pomodoro.ui.settingsScreens
8076import org.nsh07.pomodoro.ui.theme.AppFonts.robotoFlexTopBar
8177import org.nsh07.pomodoro.ui.theme.CustomColors.topBarColors
82- import org.nsh07.pomodoro.ui.theme.TomatoTheme
8378
8479
8580@OptIn(ExperimentalMaterial3Api ::class )
@@ -90,6 +85,8 @@ fun SettingsScreenRoot(
9085) {
9186 val context = LocalContext .current
9287
88+ val backStack = viewModel.backStack
89+
9390 DisposableEffect (Unit ) {
9491 viewModel.runTextFieldFlowCollection()
9592 onDispose { viewModel.cancelTextFieldFlowCollection() }
@@ -122,6 +119,7 @@ fun SettingsScreenRoot(
122119
123120 SettingsScreen (
124121 preferencesState = preferencesState,
122+ backStack = backStack,
125123 focusTimeInputFieldState = focusTimeInputFieldState,
126124 shortBreakTimeInputFieldState = shortBreakTimeInputFieldState,
127125 longBreakTimeInputFieldState = longBreakTimeInputFieldState,
@@ -150,6 +148,7 @@ fun SettingsScreenRoot(
150148@Composable
151149private fun SettingsScreen (
152150 preferencesState : PreferencesState ,
151+ backStack : SnapshotStateList <Screen .Settings >,
153152 focusTimeInputFieldState : TextFieldState ,
154153 shortBreakTimeInputFieldState : TextFieldState ,
155154 longBreakTimeInputFieldState : TextFieldState ,
@@ -168,7 +167,6 @@ private fun SettingsScreen(
168167) {
169168 val context = LocalContext .current
170169 val scrollBehavior = TopAppBarDefaults .enterAlwaysScrollBehavior()
171- val backStack = rememberNavBackStack(Screen .Settings .Main )
172170
173171 NavDisplay (
174172 backStack = backStack,
@@ -283,32 +281,3 @@ private fun SettingsScreen(
283281 }
284282 )
285283}
286-
287- @OptIn(ExperimentalMaterial3Api ::class )
288- @Preview(
289- showSystemUi = true ,
290- device = Devices .PIXEL_9_PRO
291- )
292- @Composable
293- fun SettingsScreenPreview () {
294- TomatoTheme {
295- SettingsScreen (
296- preferencesState = PreferencesState (),
297- focusTimeInputFieldState = rememberTextFieldState((25 ).toString()),
298- shortBreakTimeInputFieldState = rememberTextFieldState((5 ).toString()),
299- longBreakTimeInputFieldState = rememberTextFieldState((15 ).toString()),
300- sessionsSliderState = rememberSliderState(value = 3f , steps = 3 , valueRange = 1f .. 5f ),
301- alarmEnabled = true ,
302- vibrateEnabled = true ,
303- alarmSound = " null" ,
304- onAlarmEnabledChange = {},
305- onVibrateEnabledChange = {},
306- onBlackThemeChange = {},
307- onAodEnabledChange = {},
308- onAlarmSoundChanged = {},
309- onThemeChange = {},
310- onColorSchemeChange = {},
311- modifier = Modifier .fillMaxSize()
312- )
313- }
314- }
0 commit comments