问题修正

This commit is contained in:
2024-10-23 21:09:59 +08:00
parent dad032e233
commit fde7a0ad95

View File

@@ -4,7 +4,6 @@ import android.net.Uri
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@@ -27,7 +26,8 @@ import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material.LinearProgressIndicator
import androidx.compose.material.CircularProgressIndicator
import androidx.compose.material3.BasicAlertDialog
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.ModalBottomSheet
@@ -42,6 +42,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.PathEffect
@@ -50,6 +51,7 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.content.FileProvider
@@ -67,6 +69,7 @@ import kotlinx.coroutines.launch
import java.io.File
@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun NewPostScreen() {
@@ -78,6 +81,8 @@ fun NewPostScreen() {
systemUiController.setNavigationBarColor(color = Color.Transparent)
model.init()
}
StatusBarMaskLayout(
darkIcons = true,
modifier = Modifier
@@ -89,13 +94,6 @@ fun NewPostScreen() {
.fillMaxSize()
) {
NewPostTopBar {
// model.viewModelScope.launch {
// model.createMoment(context = context){ progress ->
// // 更新进度条
// uploadProgress = progress
// }
// navController.popBackStack()
// }
}
NewPostTextField("Share your adventure…", NewPostViewModel.textContent) {
NewPostViewModel.textContent = it
@@ -128,13 +126,35 @@ fun NewPostScreen() {
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun NewPostTopBar(onSendClick: () -> Unit = {}) {
var uploading by remember { mutableStateOf(false) }
// 上传进度
if (uploading) {
BasicAlertDialog(
onDismissRequest = { },
) {
Box(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(64.dp)).shadow(elevation = 4.dp)
.background(Color.White).padding(16.dp),
contentAlignment = Alignment.CenterStart
) {
CircularProgressIndicator(
modifier = Modifier.size(24.dp),
color = Color(0xffda3832)
)
Spacer(modifier = Modifier.width(8.dp))
Text("Uploading", modifier = Modifier.fillMaxWidth(), textAlign = TextAlign.Center)
}
}
}
val navController = LocalNavController.current
val context = LocalContext.current
val model = NewPostViewModel
var showProgressBar by remember { mutableStateOf(false) }
var uploadProgress by remember { mutableStateOf(0f) }
Box(
modifier = Modifier
.fillMaxWidth()
@@ -166,38 +186,26 @@ fun NewPostTopBar(onSendClick: () -> Unit = {}) {
Toast.makeText(context, errorMessage, Toast.LENGTH_SHORT).show()
return@noRippleClickable
}
// 点击发送按钮后立即导航回主页
navController.popBackStack()
// 显示进度条
showProgressBar = true
// 在后台启动协程处理上传逻辑
model.viewModelScope.launch {
model.createMoment(context = context) { progress ->
// 更新进度条
uploadProgress = progress
try {
uploading = true
model.createMoment(context = context) { progress ->
// 更新进度条
}
navController.popBackStack()
}catch (e:Exception) {
e.printStackTrace()
}finally {
uploading = false
}
// 上传完成后隐藏进度条
showProgressBar = false
}
}
)
}
// 在底部添加一个进度条
AnimatedVisibility(
visible = showProgressBar,
modifier = Modifier
.align(Alignment.BottomCenter)
.fillMaxWidth()
) {
LinearProgressIndicator(
progress = uploadProgress,
modifier = Modifier
.fillMaxWidth()
.height(4.dp)
)
}
}
}
@@ -239,7 +247,6 @@ fun AddImageGrid() {
for (uri in uris) {
ImageItem.fromUri(context, uri.toString())?.let {
model.imageList += it
}
}
}