Skip to content

Commit df1e080

Browse files
chore: refresh v1.2.1
1 parent ff6e817 commit df1e080

4 files changed

Lines changed: 32 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
# Changelog
22

3-
## [1.2.1] - 2026-06-20
3+
## [1.2.1] - 2026-06-21
4+
5+
### Features
6+
- 更新成績頁下拉重新整理的載入樣式,讓重新整理狀態更符合新版介面風格。
47

58
### Bug Fixes
69
- 改善 WebView 登入流程的除錯資訊,當登入頁面資料解析失敗時更容易定位問題。
710
- 修正測試資料檢查,讓假資料驗證與最新資料格式一致。
11+
- 修正深色模式切換成績模擬器、我的課表與設定頁時,畫面短暫閃白的問題。
812

913
### Performance Improvements
1014
- 優化成績趨勢折線圖的點擊與繪製處理,減少互動時不必要的重複計算。

android/app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ dependencies {
114114
implementation("androidx.compose.foundation:foundation")
115115

116116
implementation("androidx.compose.material:material-icons-core")
117-
implementation("androidx.compose.material3:material3")
117+
implementation("androidx.compose.material3:material3:1.5.0-alpha08")
118118
implementation("androidx.compose.runtime:runtime")
119119
implementation("androidx.compose.ui:ui")
120120
implementation("androidx.compose.ui:ui-graphics")

android/app/src/main/java/com/clhs/score/ui/GradesScreen.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import androidx.compose.material3.CardDefaults
3434
import androidx.compose.material3.DropdownMenu
3535
import androidx.compose.material3.DropdownMenuItem
3636
import androidx.compose.material3.ExperimentalMaterial3Api
37+
import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
3738
import androidx.compose.material3.HorizontalDivider
3839
import androidx.compose.material3.IconButton
3940
import androidx.compose.material3.LinearProgressIndicator
@@ -49,6 +50,8 @@ import androidx.compose.material3.TextButton
4950
import androidx.compose.material3.TopAppBar
5051
import androidx.compose.material3.TopAppBarDefaults
5152
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
53+
import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults
54+
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
5255
import androidx.compose.runtime.Composable
5356
import androidx.compose.runtime.DisposableEffect
5457
import androidx.compose.runtime.LaunchedEffect
@@ -104,7 +107,7 @@ private enum class GradesDestination(
104107
Advanced("更多", "more_horiz"),
105108
}
106109

107-
@OptIn(ExperimentalMaterial3Api::class)
110+
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
108111
@Composable
109112
fun GradesScreen(
110113
state: GradesUiState,
@@ -281,13 +284,22 @@ fun GradesScreen(
281284
containerColor = MaterialTheme.colorScheme.surface,
282285
) { padding ->
283286
val isRefreshing = state.isLoadingStructure || state.isLoadingGrades
287+
val pullToRefreshState = rememberPullToRefreshState()
284288

285289
PullToRefreshBox(
286290
isRefreshing = isRefreshing,
287291
onRefresh = onReload,
292+
state = pullToRefreshState,
288293
modifier = Modifier
289294
.fillMaxSize()
290295
.padding(padding),
296+
indicator = {
297+
PullToRefreshDefaults.LoadingIndicator(
298+
state = pullToRefreshState,
299+
isRefreshing = isRefreshing,
300+
modifier = Modifier.align(Alignment.TopCenter),
301+
)
302+
},
291303
) {
292304
Column(modifier = Modifier.fillMaxSize()) {
293305
if (state.isLoadingStructure || state.isLoadingGrades || state.isLoadingComparison || state.isLoadingTrend) {

android/app/src/main/java/com/clhs/score/ui/theme/ScoreTheme.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
package com.clhs.score.ui.theme
22

3+
import android.graphics.drawable.ColorDrawable
34
import android.os.Build
45
import androidx.compose.foundation.isSystemInDarkTheme
6+
import androidx.compose.foundation.layout.fillMaxSize
57
import androidx.compose.material3.MaterialTheme
8+
import androidx.compose.material3.Surface
69
import androidx.compose.material3.darkColorScheme
710
import androidx.compose.material3.dynamicDarkColorScheme
811
import androidx.compose.material3.dynamicLightColorScheme
912
import androidx.compose.material3.lightColorScheme
1013
import androidx.compose.runtime.Composable
14+
import androidx.compose.ui.Modifier
1115
import androidx.compose.ui.graphics.Color
16+
import androidx.compose.ui.graphics.toArgb
1217
import androidx.compose.ui.platform.LocalContext
1318
import androidx.compose.ui.unit.dp
1419
import com.clhs.score.data.ThemeMode
@@ -155,6 +160,7 @@ fun ScoreTheme(
155160
if (!view.isInEditMode) {
156161
androidx.compose.runtime.SideEffect {
157162
val window = (view.context as android.app.Activity).window
163+
window.setBackgroundDrawable(ColorDrawable(colorScheme.background.toArgb()))
158164
androidx.core.view.WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !useDark
159165
androidx.core.view.WindowCompat.getInsetsController(window, view).isAppearanceLightNavigationBars = !useDark
160166
}
@@ -168,7 +174,12 @@ fun ScoreTheme(
168174
MaterialTheme(
169175
colorScheme = colorScheme,
170176
shapes = ScoreShapes,
171-
content = content,
172-
)
177+
) {
178+
Surface(
179+
modifier = Modifier.fillMaxSize(),
180+
color = colorScheme.background,
181+
content = content,
182+
)
183+
}
173184
}
174185
}

0 commit comments

Comments
 (0)