[控场AI]
概念

TextFieldState

Jetpack Compose中用于管理文本输入状态的新API,提供同步更新、编辑会话、选择范围、撤销/重做等能力,基于快照系统实现高效UI更新。

时间轴 (近 90 天)

10月30日

TextFieldState 是 Compose 1.7 起稳定提供的文本输入解决方案,它在用户输入时同步更新,无需等待异步往返,以满足 IME 的同步需求。

待验证50%
10月30日

TextFieldState 除了只读的文本属性外,还封装了活动编辑会话、选择范围、撤销/重做状态,以及用于格式化文本的 span 样式和段落样式。

待验证50%
10月30日

TextFieldState 的内部属性由 Compose 快照系统支撑,Composable 在组合、布局或绘制阶段读取状态时会自动订阅更新,从而只触发必要的重组、布局或绘制。

待验证50%
10月30日

新 API 引入 InputTransformation,在用户输入到达 TextFieldState 之前进行拦截,并提供与 TextFieldBuffer 相同的 API,包括变更列表(change list)能力。

待验证50%
10月30日

TextFieldState 引用在创建后永不改变,用户输入改变的是其内部属性(如 text 字段),因此 StateFlow 无法感知其内部文本变化,不能依赖 StateFlow 来观察文本。

待验证50%
10月30日

将 TextFieldState 提升至 ViewModel 时,应将其作为 ViewModel 的直接属性,而不是放入不可变数据类的 UI 状态中,否则 copy 方法会创建新实例并导致选择、光标和历史丢失。

待验证50%
10月30日

ViewModel 没有 rememberSaveable,因此需要手动为 TextFieldState 配置 Saver 以在进程死亡后恢复状态。

待验证50%
10月30日

在 Composable 中可调用 rememberTextFieldState 来创建局部 TextFieldState,它还能帮助进程死亡后的状态恢复。

待验证50%

全部知识事实 (8)

待验证

TextFieldState 是 Compose 1.7 起稳定提供的文本输入解决方案,它在用户输入时同步更新,无需等待异步往返,以满足 IME 的同步需求。

50%
待验证

TextFieldState 除了只读的文本属性外,还封装了活动编辑会话、选择范围、撤销/重做状态,以及用于格式化文本的 span 样式和段落样式。

50%
待验证

TextFieldState 的内部属性由 Compose 快照系统支撑,Composable 在组合、布局或绘制阶段读取状态时会自动订阅更新,从而只触发必要的重组、布局或绘制。

50%
待验证

新 API 引入 InputTransformation,在用户输入到达 TextFieldState 之前进行拦截,并提供与 TextFieldBuffer 相同的 API,包括变更列表(change list)能力。

50%
待验证

TextFieldState 引用在创建后永不改变,用户输入改变的是其内部属性(如 text 字段),因此 StateFlow 无法感知其内部文本变化,不能依赖 StateFlow 来观察文本。

50%
待验证

将 TextFieldState 提升至 ViewModel 时,应将其作为 ViewModel 的直接属性,而不是放入不可变数据类的 UI 状态中,否则 copy 方法会创建新实例并导致选择、光标和历史丢失。

50%
待验证

ViewModel 没有 rememberSaveable,因此需要手动为 TextFieldState 配置 Saver 以在进程死亡后恢复状态。

50%
待验证

在 Composable 中可调用 rememberTextFieldState 来创建局部 TextFieldState,它还能帮助进程死亡后的状态恢复。

50%

来源文章