From 8af29b969b65d15221a21f200a1c71375a39f7e5 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Thu, 11 Jun 2026 00:28:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=B3=E9=97=AD=E6=82=AC=E6=B5=AE?= =?UTF-8?q?=E5=BA=95=E6=A0=8F=E6=97=B6LiquidGlass=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=8D=A1=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将LiquidGlass→Haze回退逻辑从SystemMenuPage的双Intent分发移至 ViewModel的FloatingBottomBar处理器中,确保readMenuFloatingBottomBar 和readMenuBottomBarBlurMode在同一_uiState.update中原子更新, 避免渲染管线看到floating=false+blurMode=LiquidGlass的非法中间状态。 --- .../app/ui/book/read/ReadBookViewModel.kt | 18 +++++++++++++++++- .../app/ui/book/read/sheet/SystemMenuPage.kt | 9 --------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index 470278f74..2f14f8b09 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -2531,10 +2531,26 @@ class ReadBookViewModel( } is ConfigUpdate.FloatingBottomBar -> { ReadBookConfig.readMenuFloatingBottomBar = update.value + val needsBlurFallback = !update.value && + ReadBookConfig.readMenuBottomBarBlurMode == ReadMenuBlurMode.LiquidGlass + if (needsBlurFallback) { + ReadBookConfig.readMenuBottomBarBlurMode = ReadMenuBlurMode.Haze + } viewModelScope.launch { readSettingsRepository.setReadMenuFloatingBottomBar(update.value) + if (needsBlurFallback) { + readSettingsRepository.setReadMenuBottomBarBlurMode(ReadMenuBlurMode.Haze) + } + } + _uiState.update { + it.copy( + menuConfig = it.menuConfig.copy( + readMenuFloatingBottomBar = update.value, + readMenuBottomBarBlurMode = if (needsBlurFallback) ReadMenuBlurMode.Haze + else it.menuConfig.readMenuBottomBarBlurMode, + ) + ) } - _uiState.update { it.copy(menuConfig = it.menuConfig.copy(readMenuFloatingBottomBar = update.value)) } } is ConfigUpdate.MenuTopBarBlurMode -> { val mode = update.value.coerceIn(0, 2).let { diff --git a/app/src/main/java/io/legado/app/ui/book/read/sheet/SystemMenuPage.kt b/app/src/main/java/io/legado/app/ui/book/read/sheet/SystemMenuPage.kt index 7aeb12ec0..cbfe9c1bf 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/sheet/SystemMenuPage.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/sheet/SystemMenuPage.kt @@ -525,15 +525,6 @@ private fun BottomBarTab( title = stringResource(R.string.read_menu_floating_bottom_bar), checked = floatingBottomBar, onCheckedChange = { - if (!it && preferences.readMenuBottomBarBlurMode == ReadMenuBlurMode.LiquidGlass) { - onIntent( - ReadBookIntent.UpdateConfig( - ConfigUpdate.MenuBottomBarBlurMode( - ReadMenuBlurMode.Haze - ) - ) - ) - } onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.FloatingBottomBar(it))) }, )