处理订单列表加载更多问题

This commit is contained in:
zxj
2025-07-25 17:26:56 +08:00
parent 274a278a09
commit 2eec3ec1d4
3 changed files with 47 additions and 16 deletions
@@ -24,6 +24,7 @@ import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
@@ -44,6 +45,9 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.sp
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.navigation.NavHostController import androidx.navigation.NavHostController
import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.rememberNavController
import com.sw.inbound.R import com.sw.inbound.R
@@ -79,10 +83,20 @@ fun PurchaseOrderScreen(
val canLoadMore by viewModel.canLoadMore.collectAsState() val canLoadMore by viewModel.canLoadMore.collectAsState()
val isMoreLoading by viewModel.isMoreLoading.collectAsState() val isMoreLoading by viewModel.isMoreLoading.collectAsState()
var pageNum by remember { mutableIntStateOf(1) } var pageNum by remember { mutableIntStateOf(1) }
val lifecycleOwner = LocalLifecycleOwner.current
LaunchedEffect(Unit) {
DisposableEffect(lifecycleOwner) {
val observer = LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_RESUME) {
Timber.d("ON_RESUME 触发")
pageNum = 0
viewModel.getOrderList() viewModel.getOrderList()
} }
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose { lifecycleOwner.lifecycle.removeObserver(observer) }
}
// 检测是否滚动到底部 // 检测是否滚动到底部
LaunchedEffect(lazyListState) { LaunchedEffect(lazyListState) {
@@ -112,8 +126,7 @@ fun PurchaseOrderScreen(
painter = painterResource(id = R.mipmap.bg_listview), painter = painterResource(id = R.mipmap.bg_listview),
contentDescription = "背景", contentDescription = "背景",
modifier = Modifier modifier = Modifier
.width(1900.dp) .fillMaxSize(),
.height(880.dp),
contentScale = ContentScale.FillBounds contentScale = ContentScale.FillBounds
) )
@@ -5,6 +5,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.border import androidx.compose.foundation.border
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
@@ -32,6 +33,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@@ -98,28 +100,42 @@ fun ReceiptProductScreen(
Column(modifier = modifier) { Column(modifier = modifier) {
TopTitleBar() TopTitleBar()
Row( Box(
modifier = modifier modifier = modifier
.padding(30.dp)
.weight(1f) .weight(1f)
.padding(horizontal = 10.dp)
) { ) {
Image(
painter = painterResource(id = R.mipmap.bg_listview),
contentDescription = "背景",
modifier = Modifier
.fillMaxSize(),
contentScale = ContentScale.FillBounds
)
Row( Row(
modifier = modifier modifier = Modifier.padding(
.background( start = 30.dp,
color = Color(0x80FFFFFF), end = 30.dp,
shape = RoundedCornerShape(10.dp) top = 30.dp,
bottom = 30.dp
) )
.fillMaxWidth()
.padding(30.dp)
) { ) {
// 左侧列表 // 左侧列表
ReceiptLeftView(modifier.weight(1f), viewModel, id) ReceiptLeftView(
modifier
.weight(1f)
.padding(start = 30.dp, top = 30.dp, bottom = 30.dp), viewModel, id
)
// 未调整,显示右侧界面 // 未调整,显示右侧界面
if (!adjustState) { if (!adjustState) {
Spacer(modifier = Modifier.width(30.dp)) // Spacer(modifier = Modifier.width(30.dp))
// 右侧编辑 // 右侧编辑
ReceiptRightView(modifier.width(580.dp), viewModel) ReceiptRightView(
modifier
.width(580.dp)
.padding(30.dp), viewModel
)
} }
} }
} }
@@ -5,6 +5,7 @@ import com.sw.inbound.repository.RemoteRepository
import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.StateFlow
import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
/** /**
@@ -46,6 +47,7 @@ class PurchaseOrderViewModel @Inject constructor(
if (parseResponse(response)) { if (parseResponse(response)) {
response.result?.records?.let { response.result?.records?.let {
_canLoadMore.value = it.size >= pageSize _canLoadMore.value = it.size >= pageSize
Timber.d("加载更多 canLoadMore =${it.size >= pageSize}")
_supplierList.value = _supplierList.value + it _supplierList.value = _supplierList.value + it
} }
} }