From 7af993066788d2ed8266150415a61426d89a6353 Mon Sep 17 00:00:00 2001 From: OneWay Date: Mon, 12 Oct 2026 15:31:07 +0800 Subject: [PATCH] chore(deps): bump material3 to 1.5.0-beta01 Needed for the expressive wavy progress indicator. Move the sheet states to rememberBottomSheetState, drop opt-ins for APIs that are now stable, and read the window height from LocalWindowInfo. --- README.md | 2 +- .../com/example/research/ui/about/AboutScreen.kt | 3 --- .../research/ui/main/components/MainTopBar.kt | 13 +++++++++---- .../example/research/ui/settings/SettingsScreen.kt | 2 -- .../ui/settings/components/DictionaryManagement.kt | 8 ++++++-- gradle/libs.versions.toml | 3 ++- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 41f8fd2..33aed36 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ The main search screen remains usable as long as at least one indexed dictionary - Kotlin 2.4.21 - Jetpack Compose (BOM 2026.09.00) -- Material 3 +- Material 3 1.5.0-beta01 - Coroutines and Flow 1.11.0 - DataStore Preferences 1.2.1 - Paging 3.5.2 diff --git a/app/src/main/java/com/example/research/ui/about/AboutScreen.kt b/app/src/main/java/com/example/research/ui/about/AboutScreen.kt index bc55f6f..c9ea208 100644 --- a/app/src/main/java/com/example/research/ui/about/AboutScreen.kt +++ b/app/src/main/java/com/example/research/ui/about/AboutScreen.kt @@ -19,7 +19,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.BasicAlertDialog -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface @@ -56,7 +55,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.first import kotlinx.coroutines.withContext -@OptIn(ExperimentalMaterial3Api::class) @Composable fun AboutScreen( onNavigateBack: () -> Unit @@ -310,7 +308,6 @@ private fun AboutLibraryRow( } } -@OptIn(ExperimentalMaterial3Api::class) @Composable private fun LicenseDialog( license: AboutLicense, diff --git a/app/src/main/java/com/example/research/ui/main/components/MainTopBar.kt b/app/src/main/java/com/example/research/ui/main/components/MainTopBar.kt index 144b23c..0b1a8cc 100644 --- a/app/src/main/java/com/example/research/ui/main/components/MainTopBar.kt +++ b/app/src/main/java/com/example/research/ui/main/components/MainTopBar.kt @@ -29,7 +29,8 @@ import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Surface import androidx.compose.material3.TextField import androidx.compose.material3.TextFieldDefaults -import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.material3.SheetValue +import androidx.compose.material3.rememberBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue @@ -46,7 +47,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.layout.boundsInWindow import androidx.compose.ui.layout.onGloballyPositioned -import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalWindowInfo import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.testTag @@ -291,12 +292,16 @@ private fun SearchHistorySheet( onEntryRemove: (String) -> Unit, onClearAll: () -> Unit ) { - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + val sheetState = rememberBottomSheetState( + initialValue = SheetValue.Hidden, + enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded), + ) val density = LocalDensity.current - val screenHeight = LocalConfiguration.current.screenHeightDp.dp + val windowHeightPx = LocalWindowInfo.current.containerSize.height val navigationBarsBottom = WindowInsets.navigationBars.getBottom(density) val maxContentHeight = remember { with(density) { + val screenHeight = windowHeightPx.toDp() if (isSearchBarAtBottom) { screenHeight - HistorySheetChrome - navigationBarsBottom.toDp() } else { diff --git a/app/src/main/java/com/example/research/ui/settings/SettingsScreen.kt b/app/src/main/java/com/example/research/ui/settings/SettingsScreen.kt index 1a5994c..990491f 100644 --- a/app/src/main/java/com/example/research/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/com/example/research/ui/settings/SettingsScreen.kt @@ -19,7 +19,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold @@ -104,7 +103,6 @@ fun SettingsRoute( ) } -@OptIn(ExperimentalMaterial3Api::class) @Composable fun SettingsScreen( uiState: SettingsUiState, diff --git a/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt b/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt index f6a542f..a094b87 100644 --- a/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt +++ b/app/src/main/java/com/example/research/ui/settings/components/DictionaryManagement.kt @@ -16,7 +16,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ModalBottomSheet -import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.material3.SheetValue +import androidx.compose.material3.rememberBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf @@ -75,7 +76,10 @@ fun DictionaryManagement( ) { val (showUrlBottomSheet, setShowUrlBottomSheet) = remember { mutableStateOf(false) } - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + val sheetState = rememberBottomSheetState( + initialValue = SheetValue.Hidden, + enabledValues = setOf(SheetValue.Hidden, SheetValue.Expanded), + ) val haptic = LocalHapticFeedback.current val focusManager = LocalFocusManager.current diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9294023..425c6b3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,6 +8,7 @@ datastore_preferences = "1.2.1" documentfile = "1.1.0" kotlin = "2.4.21" lifecycle_runtime_ktx = "2.11.0" +material3 = "1.5.0-beta01" okhttp = "5.5.0" paging = "3.5.2" profileinstaller = "1.4.1" @@ -17,7 +18,7 @@ kotlinx_serialization = "1.11.0" [libraries] androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity_compose" } androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose_bom" } -androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } +androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } androidx-compose-material3-adaptive-layout = { group = "androidx.compose.material3.adaptive", name = "adaptive-layout" } androidx-compose-runtime-tracing = { module = "androidx.compose.runtime:runtime-tracing" } androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" }