问题修正
This commit is contained in:
@@ -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 {
|
||||
try {
|
||||
uploading = true
|
||||
model.createMoment(context = context) { progress ->
|
||||
// 更新进度条
|
||||
uploadProgress = 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
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user