影视搜索结果按 ↓ 焦点逃到侧栏「番剧」、进不了结果网格(P11-267 / P11-268)。
变更
- 现象:影视搜到结果后,焦点停在「影视」类型 chip,按 ↓ 直接跳到侧栏的「番剧」分区,结果卡片选不中。
- 根因一(P11-267):
TvVideoGrid.moveFocus末行 ↓ 找不到下一行时返回false,把按键漏给 Compose
默认焦点遍历;遍历按几何在网格外找 focusable,侧栏分区列表正好可选 ⇒ 焦点逃出网格。原注释以为
「没有 footer 时遍历找不到下方焦点」,实测不成立。影视结果通常只有一行,所以最先暴露。 - 根因二(P11-268):结果首卡只挂
firstResultFocusRequester(item 0),单帧requestFocus在网格
刚重建/首项尚未挂载时会落空;而自动聚焦那条 effect 落空后照样消费focusFirstResult⇒ 焦点永远停在
类型 chip 上。之后每次 ↓ 也只是重复失败。 - 改动:①末行 ↓ 只在有 footer(加载失败重试按钮)时漏给默认遍历,
footer == None时吞掉按键;
②新增按帧重试(FirstResultFocusRetryCount = 12,≈200ms):标题 / 排序 chip / 类型 chip 的 ↓ 都会重试
请求首卡焦点,无论成败都吞掉按键;③自动聚焦 effect 同样重试,成功才break,循环结束才消费标志。 - 真机判据:影视搜索出结果后,从「影视」chip 按 ↓ 能进结果网格并选中卡片;结果只有一行时末行 ↓
焦点不动;任何时刻焦点都不会跳到侧栏分区。