From c1f52c63378af9005c1052d55d0a63fdb3e0074d Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Mon, 18 May 2026 09:03:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(vector):=20=E8=A7=A3=E5=86=B3=E9=A3=9F?= =?UTF-8?q?=E6=9D=90=E6=90=9C=E7=B4=A2=E5=88=97=E8=A1=A8=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 resetGoodsListState 方法重置商品列表状态 - 添加 UiState.Error 状态处理并显示错误提示 - 搜索前重置商品列表状态避免状态残留 - 更新空数据显示文本为更明确的提示信息 - 点击空布局时触发重新搜索功能 --- .../com/shuwei/dish/match/net/NetViewModel.kt | 4 +++ .../ui/fragment/VectorCollectionFragment.kt | 26 ++++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) 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 3c72767..5dea168 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 @@ -149,6 +149,10 @@ class NetViewModel( private val _foodSearchGoodsListState = MutableStateFlow?>>(UiState.Idle) val foodSearchGoodsListState: StateFlow?>> = _foodSearchGoodsListState.asStateFlow() + fun resetGoodsListState() { + _goodsListState.value = UiState.Idle + } + /** * 查询物品信息列表(食材 goodsType=0,调料 goodsType=1 共用) * @param goodsType 物品类型:0=食材,1=调料 diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/VectorCollectionFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/VectorCollectionFragment.kt index d07ee28..1018397 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/VectorCollectionFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/fragment/VectorCollectionFragment.kt @@ -315,6 +315,11 @@ class VectorCollectionFragment : BaseFragment() if (list.isEmpty()) loadEmptyView() else fillSearchList(list) } + is UiState.Error -> { + toast(state.msg) + loadEmptyView() + } + else -> Unit } } @@ -381,10 +386,13 @@ class VectorCollectionFragment : BaseFragment() debouncer.debounce { val keyword = binding.editFoodName.text.toString().trim() // 通过 NetViewModel 查询净材数据(goodsType=0 食材),结果由 initialize() 中的 observer 统一处理 - currentActivity.netViewModel.queryGoodsList( - goodsType = "0", - goodsName = keyword.ifEmpty { null } - ) + currentActivity.netViewModel.run { + resetGoodsListState() + queryGoodsList( + goodsType = "0", + goodsName = keyword.ifEmpty { null } + ) + } } } @@ -436,9 +444,13 @@ class VectorCollectionFragment : BaseFragment() } emptyViewBinding?.let { it.tvContent.text = "暂无数据" - it.tvSubContent.text = "点击此处重新查询" - // 点击空布局填充本地假数据,便于 UI 效果测试 -// it.root.setOnClickListener { fillSearchList(buildMockGoodsList()) } + it.tvSubContent.text = "未查询到食材信息,请稍后重试" + // 点击空布局 + it.root.setOnClickListener { + //填充本地假数据,便于 UI 效果测试 + //fillSearchList(buildMockGoodsList()) + searchFood() + } binding.rvSearchFood.post { it.root.minimumHeight = binding.rvSearchFood.height searchAdapter.stateView = it.root