fix: 操作成功弹窗不消失问题 + 统一弹窗交互

问题:back=false 导致弹窗永远不消失
修复:所有弹窗统一 back=true + countdown=2 自动消失
用 onBack 回调替代 postDelayed,弹窗消失后再执行刷新/返回

弹窗梳理:
- 操作成功(抢单/打卡/完成):2秒消失 → onBack 刷新列表
- 全部完成:2秒消失 → onBack 返回首页
- NFC打卡成功:2秒消失 → postDelayed 刷新详情
- 失败/网络异常:3秒消失 → 无回调

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-05-07 21:36:09 +09:30
parent 646f780a1f
commit d38060e9b3

View File

@@ -163,11 +163,12 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
// 操作后列表为空 → 显示"全部完成"后返回首页
tipDialog.show(
status = QuTipDialog.Status.SUCCESS,
title = "全部完成"
title = "全部完成",
back = true, step = 1, countdown = 2,
onBack = {
if (isAdded && view != null) findNavController().popBackStack()
}
)
binding.root.postDelayed({
if (isAdded && view != null) findNavController().popBackStack()
}, 1500)
} else {
showEmpty()
}
@@ -933,17 +934,15 @@ class TaskListFragment : BaseFragment<FragmentTaskListBinding>() {
val currentId = taskList.getOrNull(taskIndex)?.id ?: 0L
filterTaskIds = filterTaskIds!!.filter { it != currentId }.toLongArray()
}
// 先显示成功弹窗,等弹窗消失后刷新(避免黑屏闪烁)
// 弹窗 2 秒自动消失,消失后刷新列表
tipDialog.show(
status = QuTipDialog.Status.SUCCESS,
title = successMsg,
back = false, step = 0, countdown = 0
back = true, step = 1, countdown = 2,
onBack = {
if (isAdded && view != null) fetchTaskIds()
}
)
// 2 秒后刷新
binding.root.postDelayed({
if (!isAdded || view == null) return@postDelayed
fetchTaskIds()
}, 2000)
}
is ApiResult.Error -> {
tipDialog.show(