Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Bug] Intent Caching and BottomSheet Stacking via Android Widgets & Deep Links

未关闭
#627 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
45/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
android, dart, flutter
领域
mobile

调研方向

首先跟踪 Android Home Screen Widget 和 Quick Action/deep-link 进入 Flutter 的入口点,然后检查 DetailRouteController 以及 FAB 的原生 showModalBottomSheet 流程。复现这两种后台启动场景,并验证新 task 能够正确打开,以及保存由 intent 驱动的 sheet 后能够返回底层的 Home 屏幕,且不会出现黑色遮罩。

由索引模型根据 Issue 内容生成。

描述

bug
Describe your issue

When the application is launched from the background via an Android Home Screen Widget or Quick Action intent, GetX state management encounters two severe routing and context synchronization bugs:

  1. The Widget Controller Cache Loop: Tapping "Task 1" on a widget correctly loads the Detail Route and instantiates a DetailRouteController for Task 1. However, if the app is backgrounded and the user taps a widget for "Task 3", GetX recognizes that DETAIL_ROUTE is already active in memory. Instead of routing the new UUID, GetX lazily reuses the cached DetailRouteController, keeping "Task 1" permanently stuck on screen for all subsequent widget taps.

  2. The "Black Screen" Context Void: The Floating Action Button natively launched showModalBottomSheet. If a user tapped a "Quick Action" or "Widget Add Task" intent while the app was backgrounded with a native sheet open, GetX was unable to detect the native sheet via Get.isBottomSheetOpen. GetX stacked the new intent sheet on top. Upon saving, the system popped the GetX sheet, stranding the user inside an orphaned/black void natively.

Steps to reproduce

Widget Caching Loop:

  1. Tap Task 1 from an Android Widget.
  2. Press the Android Home button to background the app.
  3. Tap Task 3 from an Android Widget.
    Result: The app incorrectly displays Task 1.

Black Screen Void:

  1. Tap the in-app + FAB to open the Add Task modal.
  2. Press the Android Home button to background the app.
  3. Long-press the App Icon and trigger the "Add Task" Quick Action intent.
  4. Fill out the task details and hit Save.
    Result: The UI dismisses the active modal but reveals a broken/black overlay instead of the Home screen.
What was the expected result?

The app should cleanly unmount stale overlays (like the native FAB bottom sheet) and explicitly purge legacy controllers (DetailRouteController) from memory before injecting new routing intents from a warm start. The new task should load accurately, and closing a bottom sheet should safely return the user to the underlying UI without crashing into a black screen.

Put here any screenshots or videos (optional)

https://github.com/user-attachments/assets/5d021ebe-5f77-475e-b0d0-e6d84e01a383

How can we contact you (optional)

No response

Would you like to work on this issue?

Yes

By submitting this issue, I have confirmed that:
  • I have starred the repo ⭐ and watched 👀 it on GitHub and followed the contribution guidelines.
主要语言
Dart
星标
244
派生
180
平均合并
16 小时 19 分钟
30 天内合并 PR
4

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

CCExtractor/taskwarrior-flutter 的其他 Issue

查看 CCExtractor/taskwarrior-flutter 的全部 Issue

相似的 Issue

更多 Dart Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。