Browse Source

优化体验

bjb 7 hours ago
parent
commit
0fde57d19d

+ 14 - 8
app/src/main/java/com/iscs/bozzys/ui/base/Loading.kt

@@ -1,11 +1,16 @@
 package com.iscs.bozzys.ui.base
 
 import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.sizeIn
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.material3.CircularProgressIndicator
+import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
@@ -13,6 +18,7 @@ import androidx.compose.ui.draw.clip
 import androidx.compose.ui.graphics.Color
 import androidx.compose.ui.input.pointer.pointerInput
 import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
 import androidx.lifecycle.viewmodel.compose.viewModel
 import com.iscs.bozzys.ui.pages.vm.VMLoading
 
@@ -28,16 +34,16 @@ fun LoadingCompose(vm: VMLoading = viewModel()) {
             .pointerInput(Unit) {}, // 不允许点击穿透
         contentAlignment = Alignment.Center
     ) {
-        Box(
+        Column(
             Modifier
-                .sizeIn(80.dp, 80.dp, 300.dp, 300.dp)
-                .clip(RoundedCornerShape(20.dp))
-                .background(Color.Black.copy(alpha = 0.5f)),
-            contentAlignment = Alignment.Center
-
+                .sizeIn(90.dp, 90.dp, 150.dp, 150.dp)
+                .clip(RoundedCornerShape(8.dp))
+                .background(Color.Black.copy(alpha = 0.6f)),
+            verticalArrangement = Arrangement.Center,
+            horizontalAlignment = Alignment.CenterHorizontally
         ) {
-            CircularProgressIndicator()
+            CircularProgressIndicator(Modifier.size(30.dp))
+            Text("加载中...", Modifier.padding(top = 5.dp), color = Color.White, fontSize = 12.sp)
         }
-
     }
 }

+ 11 - 8
app/src/main/java/com/iscs/bozzys/ui/base/PageBase.kt

@@ -26,6 +26,7 @@ import com.iscs.bozzys.ui.pages.vm.StateLoading
 import com.iscs.bozzys.ui.pages.vm.VMLoading
 import com.iscs.bozzys.ui.theme.BozzysTheme
 import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.MutableSharedFlow
 import kotlinx.coroutines.launch
@@ -156,8 +157,8 @@ abstract class PageBase(
     /**
      * 显示toast,Flow方式
      */
-    suspend fun MutableSharedFlow<Any>.showToast() {
-        this.collect { msg -> msg.showToast() }
+    fun MutableSharedFlow<Any>.showToast() {
+        lifecycleScope.async { this@showToast.collect { msg -> msg.showToast() } }
     }
 
     /**
@@ -177,12 +178,14 @@ abstract class PageBase(
     /**
      * 显示toast,Flow方式
      */
-    suspend fun MutableSharedFlow<StateLoading>.loading() {
-        this.collect { stateLoading ->
-            if (stateLoading.show) {
-                loading?.show(stateLoading)
-            } else {
-                loading?.hide()
+    fun MutableSharedFlow<StateLoading>.loading() {
+        lifecycleScope.async {
+            this@loading.collect { stateLoading ->
+                if (stateLoading.show) {
+                    loading?.show(stateLoading)
+                } else {
+                    loading?.hide()
+                }
             }
         }
     }

+ 7 - 1
app/src/main/java/com/iscs/bozzys/ui/pages/home/PageHome.kt

@@ -38,6 +38,7 @@ import androidx.compose.ui.unit.sp
 import androidx.lifecycle.viewmodel.compose.viewModel
 import com.iscs.bozzys.ui.base.PageBase
 import com.iscs.bozzys.ui.pages.vm.VMHome
+import kotlinx.coroutines.async
 
 /**
  * 打开主页面
@@ -59,7 +60,12 @@ class PageHome : PageBase() {
     @Composable
     fun Home(pv: PaddingValues, vm: VMHome = viewModel()) {
         val state by vm.state.collectAsState()
-        LaunchedEffect(Unit) { vm.init() }
+        LaunchedEffect(Unit) {
+            // 处理基础Toast和Loading提示
+            vm.toastEvent.showToast()
+            vm.loadingEvent.loading()
+            vm.init()
+        }
         Scaffold(
             modifier = Modifier
                 .fillMaxSize(),

+ 2 - 3
app/src/main/java/com/iscs/bozzys/ui/pages/login/PageLogin.kt

@@ -55,7 +55,6 @@ import com.iscs.bozzys.ui.theme.Main
 import com.iscs.bozzys.ui.theme.SubMain
 import com.iscs.bozzys.ui.theme.Text
 import com.iscs.bozzys.ui.theme.TextDesc
-import kotlinx.coroutines.async
 
 /**
  * 打开登录页面
@@ -120,8 +119,8 @@ class PageLogin : PageBase() {
         val state = vm.state
         LaunchedEffect(Unit) {
             // 处理基础Toast和Loading提示
-            async { vm.toastEvent.showToast() }
-            async { vm.loadingEvent.loading() }
+            vm.toastEvent.showToast()
+            vm.loadingEvent.loading()
         }
         Column(
             Modifier