Skip to content

Commit 74616eb

Browse files
committed
增加字体加载时的提示
1 parent 8630132 commit 74616eb

File tree

1 file changed

+47
-28
lines changed
  • composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen

1 file changed

+47
-28
lines changed

composeApp/src/wasmJsMain/kotlin/love/forte/simbot/codegen/App.kt

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
package love.forte.simbot.codegen
22

3+
import androidx.compose.animation.AnimatedContent
34
import androidx.compose.animation.ExperimentalSharedTransitionApi
45
import androidx.compose.foundation.isSystemInDarkTheme
6+
import androidx.compose.foundation.layout.Arrangement
57
import androidx.compose.foundation.layout.Box
8+
import androidx.compose.foundation.layout.Column
9+
import androidx.compose.foundation.layout.Spacer
610
import androidx.compose.foundation.layout.fillMaxSize
11+
import androidx.compose.foundation.layout.padding
712
import androidx.compose.material3.CircularProgressIndicator
813
import androidx.compose.material3.MaterialTheme
14+
import androidx.compose.material3.Text
915
import androidx.compose.material3.darkColorScheme
1016
import androidx.compose.material3.lightColorScheme
1117
import androidx.compose.runtime.Composable
@@ -14,9 +20,11 @@ import androidx.compose.ui.Alignment
1420
import androidx.compose.ui.Modifier
1521
import androidx.compose.ui.graphics.Color
1622
import androidx.compose.ui.text.font.FontFamily
23+
import androidx.compose.ui.unit.dp
1724
import love.forte.simbot.codegen.gen.view.GradleSettingsView
1825
import org.jetbrains.compose.resources.ExperimentalResourceApi
1926
import org.jetbrains.compose.resources.preloadFont
27+
import simbot_codegen.composeapp.generated.resources.JetBrainsMono_Medium
2028
import simbot_codegen.composeapp.generated.resources.LXGWNeoXiHeiScreen
2129
import simbot_codegen.composeapp.generated.resources.Res
2230

@@ -26,8 +34,8 @@ import simbot_codegen.composeapp.generated.resources.Res
2634
@Composable
2735
fun App() {
2836
@OptIn(ExperimentalResourceApi::class)
29-
val font by preloadFont(resource = Res.font.LXGWNeoXiHeiScreen)
30-
val fm = font?.let { FontFamily(it) }
37+
val lxgwNeo by preloadFont(resource = Res.font.LXGWNeoXiHeiScreen)
38+
val fm = lxgwNeo?.let { FontFamily(it) }
3139

3240
val darkTheme = isSystemInDarkTheme()
3341

@@ -67,32 +75,43 @@ fun App() {
6775
)
6876
}
6977

70-
if (fm == null) {
71-
Box(modifier = Modifier.fillMaxSize()) {
72-
CircularProgressIndicator(modifier = Modifier.align(Alignment.Center))
73-
}
74-
} else {
75-
MaterialTheme(
76-
colorScheme = colorScheme,
77-
typography = MaterialTheme.typography.copy(
78-
displayLarge = MaterialTheme.typography.displayLarge.copy(fontFamily = fm),
79-
displayMedium = MaterialTheme.typography.displayMedium.copy(fontFamily = fm),
80-
displaySmall = MaterialTheme.typography.displaySmall.copy(fontFamily = fm),
81-
headlineLarge = MaterialTheme.typography.headlineLarge.copy(fontFamily = fm),
82-
headlineMedium = MaterialTheme.typography.headlineMedium.copy(fontFamily = fm),
83-
headlineSmall = MaterialTheme.typography.headlineSmall.copy(fontFamily = fm),
84-
titleLarge = MaterialTheme.typography.titleLarge.copy(fontFamily = fm),
85-
titleMedium = MaterialTheme.typography.titleMedium.copy(fontFamily = fm),
86-
titleSmall = MaterialTheme.typography.titleSmall.copy(fontFamily = fm),
87-
bodyLarge = MaterialTheme.typography.bodyLarge.copy(fontFamily = fm),
88-
bodyMedium = MaterialTheme.typography.bodyMedium.copy(fontFamily = fm),
89-
bodySmall = MaterialTheme.typography.bodySmall.copy(fontFamily = fm),
90-
labelLarge = MaterialTheme.typography.labelLarge.copy(fontFamily = fm),
91-
labelMedium = MaterialTheme.typography.labelMedium.copy(fontFamily = fm),
92-
labelSmall = MaterialTheme.typography.labelSmall.copy(fontFamily = fm),
93-
)
94-
) {
95-
GradleSettingsView()
78+
AnimatedContent(fm) { fm ->
79+
if (fm == null) {
80+
Box(modifier = Modifier.fillMaxSize()) {
81+
Column(
82+
modifier = Modifier.align(Alignment.Center),
83+
verticalArrangement = Arrangement.Center,
84+
horizontalAlignment = Alignment.CenterHorizontally,
85+
) {
86+
CircularProgressIndicator(modifier = Modifier.align(Alignment.CenterHorizontally))
87+
Spacer(Modifier.padding(8.dp))
88+
Text("Font loading...")
89+
}
90+
}
91+
} else {
92+
MaterialTheme(
93+
colorScheme = colorScheme,
94+
typography = MaterialTheme.typography.copy(
95+
displayLarge = MaterialTheme.typography.displayLarge.copy(fontFamily = fm),
96+
displayMedium = MaterialTheme.typography.displayMedium.copy(fontFamily = fm),
97+
displaySmall = MaterialTheme.typography.displaySmall.copy(fontFamily = fm),
98+
headlineLarge = MaterialTheme.typography.headlineLarge.copy(fontFamily = fm),
99+
headlineMedium = MaterialTheme.typography.headlineMedium.copy(fontFamily = fm),
100+
headlineSmall = MaterialTheme.typography.headlineSmall.copy(fontFamily = fm),
101+
titleLarge = MaterialTheme.typography.titleLarge.copy(fontFamily = fm),
102+
titleMedium = MaterialTheme.typography.titleMedium.copy(fontFamily = fm),
103+
titleSmall = MaterialTheme.typography.titleSmall.copy(fontFamily = fm),
104+
bodyLarge = MaterialTheme.typography.bodyLarge.copy(fontFamily = fm),
105+
bodyMedium = MaterialTheme.typography.bodyMedium.copy(fontFamily = fm),
106+
bodySmall = MaterialTheme.typography.bodySmall.copy(fontFamily = fm),
107+
labelLarge = MaterialTheme.typography.labelLarge.copy(fontFamily = fm),
108+
labelMedium = MaterialTheme.typography.labelMedium.copy(fontFamily = fm),
109+
labelSmall = MaterialTheme.typography.labelSmall.copy(fontFamily = fm),
110+
)
111+
) {
112+
GradleSettingsView()
113+
}
96114
}
97115
}
116+
98117
}

0 commit comments

Comments
 (0)