在 iOS 版 Flutter 中监听键盘事件

问题描述 投票:0回答:1

我正在尝试构建基于检测用户键盘事件的逻辑(例如,当用户在文本字段中按下退格键时)。这似乎适用于我的 Android 设备构建,但不适用于 iOS 设备。当用户按下某个键时,似乎没有调用包装我的文本字段的 KeyboardListener。

我尝试了 KeyboardListener 和 RawKeyboardListener,但似乎都不起作用。我怎样才能让它在 iOS 上像在 Android 上一样工作?

这是我的代码片段:

import 'package:flutter/material.dart'

class TestComponent extends StatelessWidget {
  const TestComponent({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      child: KeyboardListener(
          onKeyEvent: (key) {
            print(key);
          },
          focusNode: FocusNode(),
          child: TextField()),
    );
  }
}
ios flutter keyboard keyevent
1个回答
0
投票

恐怕

KeyboardListener
不适用于 iOS 上的软键盘。 检查这个评论。

但是,如果您只需要跟踪“Backspace”键事件并且愿意花一些时间,您可以采取解决方法:

我监督了作者如何在这个包中解决这个问题:https://pub.dev/packages/pin_input_text_field

基本上,它们有一个隐藏的

TextController
,其中包含实际的输入文本,并且它们具有用户可见的文本字段,带有假光标和动画,使其像真正的光标一样闪烁。

他们跟踪真实文本控制器中的变化,并根据相应输入字段上的光标动画的文本长度更新 UI 上的假文本字段。

这就是当您在空文本字段上按“退格键”时,他们模拟行为的方式 - >焦点切换到上一个文本字段。

如果打开 pin_input_text_field 包,逻辑位于

_pin_state.dart
类中。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.