From a70551086e1c71cdfe55f6caef4db69bb62016ed Mon Sep 17 00:00:00 2001 From: PranshulGG Date: Sat, 15 Aug 2026 16:06:03 +0530 Subject: [PATCH] update BottomSheet state management --- .../feature/locations/LocationsScreen.kt | 9 ++++++++- .../feature/search/SearchScreen.kt | 7 ++++++- .../appearance/components/SettingsColorPickerTile.kt | 12 +++++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/feature/locations/LocationsScreen.kt b/app/src/main/java/com/pranshulgg/weather_master_app/feature/locations/LocationsScreen.kt index ee578ff00..d9e7cccc0 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/feature/locations/LocationsScreen.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/feature/locations/LocationsScreen.kt @@ -16,10 +16,12 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold +import androidx.compose.material3.SheetValue import androidx.compose.material3.Text import androidx.compose.material3.TooltipAnchorPosition import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -66,7 +68,12 @@ fun LocationsScreen( ) { val viewModel: LocationsScreenViewModel = hiltViewModel() - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + val sheetState = rememberBottomSheetState( + initialValue = SheetValue.Hidden, + enabledValues = setOf(SheetValue.Expanded, SheetValue.Hidden) + ) + + val uiState = viewModel.uiState val weatherForLocations by viewModel.allLocationsWeather.collectAsStateWithLifecycle( diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/feature/search/SearchScreen.kt b/app/src/main/java/com/pranshulgg/weather_master_app/feature/search/SearchScreen.kt index 8566c664c..3fc1ee914 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/feature/search/SearchScreen.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/feature/search/SearchScreen.kt @@ -17,7 +17,9 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.IconButtonDefaults import androidx.compose.material3.LoadingIndicator import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SheetValue import androidx.compose.material3.Text +import androidx.compose.material3.rememberBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -70,7 +72,10 @@ fun SearchScreen(navController: NavController) { val prefs = LocalAppPrefs.current var selectedLocationId by remember { mutableStateOf("") } var selectedLocation by remember { mutableStateOf(null) } - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + val sheetState = rememberBottomSheetState( + initialValue = SheetValue.Hidden, + enabledValues = setOf(SheetValue.Expanded, SheetValue.Hidden) + ) diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/feature/settings/appearance/components/SettingsColorPickerTile.kt b/app/src/main/java/com/pranshulgg/weather_master_app/feature/settings/appearance/components/SettingsColorPickerTile.kt index d518efb2e..4b021b05c 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/feature/settings/appearance/components/SettingsColorPickerTile.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/feature/settings/appearance/components/SettingsColorPickerTile.kt @@ -9,7 +9,9 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SheetValue import androidx.compose.material3.Surface +import androidx.compose.material3.rememberBottomSheetState import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -18,8 +20,10 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.core.graphics.toColorInt +import com.pranshulgg.weather_master_app.R import com.pranshulgg.weather_master_app.core.prefs.LocalAppPrefs import com.pranshulgg.weather_master_app.core.ui.components.ActionBottomSheet @@ -29,7 +33,11 @@ fun ColorPickerBtn() { val prefs = LocalAppPrefs.current var selectedColor = prefs.customThemeColor - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + val sheetState = rememberBottomSheetState( + initialValue = SheetValue.Hidden, + enabledValues = setOf(SheetValue.Expanded, SheetValue.Hidden) + ) + var isSheetOpen by remember { mutableStateOf(false) } Surface( @@ -55,6 +63,8 @@ fun ColorPickerBtn() { if (isSheetOpen) ActionBottomSheet( sheetState = sheetState, + cancelText = stringResource(R.string.action_cancel), + confirmText = stringResource(R.string.action_save), onCancel = { isSheetOpen = false },