Flutter physicalKey 和 logicalKey 的区别 和使用场景

4 min read

Flutter 中的 PhysicalKey 和 LogicalKey 是用于处理键盘事件的类。

PhysicalKey 表示实际的键盘按键,对应系统中的按键码。例如,A 键的按键码是 0x41。PhysicalKey 是用于描述按键码和按键事件的物理特征。可以用 PhysicalKey 来处理按键事件的物理特点,比如按键位置和按键的种类。

LogicalKey 表示逻辑上的键盘按键,对应一个或多个 PhysicalKey。例如,Q、W、E、R、T 几个键可以都映射到 LOGICAL_KEY_A,这样即使用户使用不同键盘布局,这些按键也可以被正确识别和处理。可以用 LogicalKey 来处理按键事件的逻辑特点,比如按键映射和按键组合。

使用场景:

1.当需要处理按键事件时,可以使用 PhysicalKey 或 LogicalKey 来区分不同的按键。

2.当需要处理按键事件的组合时,比如 Ctrl+C、Ctrl+V,可以使用 LogicalKey。

3.当需要处理按键位置时,比如 WASD 键盘游戏,可以使用 PhysicalKey。

总之,PhysicalKey 和 LogicalKey 的区别在于它们处理的是按键事件的不同特点。在实际使用中,需要根据处理的具体场景选择合适的键盘事件处理类。