From 267628411a51a45cfb4e385fe4bd0a4b468a5fcb Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Thu, 23 Apr 2026 17:41:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(viewmodel):=20=E4=BF=AE=E5=A4=8D=E5=88=87?= =?UTF-8?q?=E6=8D=A2=20tab=20=E8=BF=94=E5=9B=9E=E5=90=8E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B6=88=E5=A4=B1=E5=8F=8A=20loading=20=E4=B8=8D=E6=B6=88?= =?UTF-8?q?=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 切换 tab 时重置对方的 StateFlow 状态为初始值,避免 repeatOnLifecycle 重启后 replay 残留状态导致 UI 异常覆盖或 loading 无法关闭 Co-Authored-By: Claude Sonnet 4.6 --- app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt | 4 +++- app/src/main/java/com/shuwei/dish/match/net/NetViewModel.kt | 3 +++ .../java/com/shuwei/dish/match/ui/SamplingListActivity.kt | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt b/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt index 0540024..15bac25 100644 --- a/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt +++ b/app/src/main/java/com/shuwei/dish/match/db/DbViewModel.kt @@ -36,7 +36,9 @@ class DbViewModel : ViewModel() { private val _cookFoodListState = MutableStateFlow?>(null) val cookFoodListState: StateFlow?> = _cookFoodListState.asStateFlow() - + fun resetCookFoodList() { + _cookFoodListState.value = null + } fun getCookFoodList( cookMode: Int, dinnerType: String = "0" diff --git a/app/src/main/java/com/shuwei/dish/match/net/NetViewModel.kt b/app/src/main/java/com/shuwei/dish/match/net/NetViewModel.kt index f264d13..7971b36 100644 --- a/app/src/main/java/com/shuwei/dish/match/net/NetViewModel.kt +++ b/app/src/main/java/com/shuwei/dish/match/net/NetViewModel.kt @@ -72,6 +72,9 @@ class NetViewModel( */ private val _samplingListState = MutableStateFlow?>>(UiState.Idle) val samplingListState: StateFlow?>> = _samplingListState.asStateFlow() + fun resetSamplingListState() { + _samplingListState.value = UiState.Idle + } /** * 查询采样数据列表 diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt index 511632d..621f209 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt @@ -307,13 +307,18 @@ class SamplingListActivity : BaseActivity() { @SuppressLint("NotifyDataSetChanged") fun refreshLocalData() { showLoading() + appViewModel.resetCookFoodList() getCookFoodList() } private fun requestData(isCooking: Boolean) { if (isCooking) { + // 清除上次网络请求的残留状态 + netViewModel.resetSamplingListState() refreshLocalData() } else { + // 同理,清除本地数据残留状态 + appViewModel.resetCookFoodList() pageNo = 1 getSamplingList() }