InteractionSource

interface InteractionSource : ComposableProperties<InteractionSource>

InteractionSource 代表一个与组件发出的事件相对应的 Interaction 事件流。 这些 Interaction 可用于改变组件在不同状态下的外观,例如当组件被按下或拖动时。

一个常见的用例是与 Indication (例如水波纹效果) 配合使用,Indication 的实现可以订阅一个 InteractionSource 来为不同的 Interaction 绘制指示效果,例如为 PressInteraction.Press 绘制水波纹,或为 DragInteraction.Start 绘制状态覆盖层。

对于只关心 Interaction 二元状态的简单情况,例如一个组件是否被按下,您可以使用 InteractionSource.collectIsPressedAsState() 等扩展函数。这些函数会订阅事件流并返回一个 代表组件是否处于该状态的 State<Boolean>

对于更复杂的场景,例如构建一个自定义的 Indication,事件的顺序可能会改变组件或指示效果的绘制方式。 例如,如果一个组件正在被拖动,然后获得了焦点,那么最新的 Interaction 就是 FocusInteraction.Focus, 因此组件应该显示为聚焦状态,以便向用户传达这一事件。getInteractions() 所返回的 Flow 正是为了支持这些用例。

如需发射 Interaction 以便消费者可以对其做出反应,请参见 MutableInteractionSource

Author

M8Test, [email protected], https://m8test.com

See also

Inheritors

Functions

Link copied to clipboard

获取一个 Flow,它代表了通过此 InteractionSource 发出的所有 Interaction 的事件流。