Skip to content

fix(android): 统一任务新建布局并补齐四维归属选择 - #14

Merged
z7ping merged 11 commits into
mainfrom
fix/android-task-create-dimension-layout
Oct 18, 2026
Merged

z7ping merged 11 commits into
mainfrom
fix/android-task-create-dimension-layout

Conversation

@z7ping

@z7ping z7ping commented Oct 16, 2026

Copy link
Copy Markdown
Owner

修复范围

  • Android 快捷「记录任务」:避免输入法弹出时 Sheet 全屏拉伸;表单内容可滚动、主要操作固定在底部;移除表单内重复键盘 inset 处理(统一由 FxSheet 负责)。
  • Android 完整「新建任务」:保留页面级表单滚动和底部固定保存区,复用 FxDialogActions;通过 Scaffold 正常处理软键盘。
  • 快捷与完整两种入口新增统一四维归属字段「未归类 / 身体 / 认知 / 产出 / 关系」,全部采用现有 FxChoiceChip、FxFormField 和 DimensionCatalog。
  • 不增加任务 dimension_key 字段;遵循现有 Task.system_tag_id → ObservationTag.dimension_key → BehaviorEvent/Analytics 链路。选择维度时复用对应默认观察标签,尚未存在则按需创建;不随意复用同维度的自定义观察标签。无选择不变更原有来源标签;主动选择未归类时可清除。
  • 「更多设置」迁移当前标题、清单、日期、优先级、四维归属,不丢快捷输入。
  • 快捷清单使用已有列表图标、优先级短标签与完整表单一致,减少 Android 换行。
  • 保留原有首页可拖动悬浮添加任务按钮,不改后台 API/数据表/版本号。

代码证据

  • client/lib/models/dimension.dart 定义固定四维;
  • client/lib/repositories/observation_tag_repository.dart 已实现本地与云端观察标签的读取/创建;
  • client/lib/services/data_service.dart 已支持 systemTagId,本地/服务端完成任务事件沿用该字段。
  • client/lib/ui/widgets/fx_sheet.dart 统一输入法避让;快捷表单不再另加一层 inset。

验证

  • 新增/补充单测:四维标签原值保留、取消归属、现有默认标签复用、无标签首次创建、避免误选自定义标签;UI 四维选项与 360dp / 130% 字体换行、完整表单预选值。
  • main...fix/android-task-create-dimension-layout 比较确认仅 7 个客户端相关源/测试文件,领先 11 个提交,无落后。
  • 当前执行环境没有 Flutter SDK,未实际运行 Flutter 测试或 Android 真机测试;待本地重点检查 360dp / 130% 字体、软键盘弹出收起、切换更多设置、按钮可见性和离线/云端创建维度标签。
  • 本 PR 与首页收口 Draft PR fix(android): 收紧「今天」首页布局并统一卡片 #13 分开;不合并、不发布。

@z7ping
z7ping marked this pull request as ready for review October 18, 2026 13:34
@z7ping
z7ping merged commit b6873fa into main Oct 18, 2026
8 checks passed
z7ping added a commit that referenced this pull request Oct 18, 2026
fix(android): 逐页面 UI/UX 收口 01–15(基于 #14)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant