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