dart 无法在MenuAnchor Flutter内的Textfield中使用箭头键

flvlnr44  于 2023-09-28  发布在  Flutter
关注(0)|答案(1)|浏览(130)

我不能使用箭头键在文本字段内移动光标,但除此之外,它可以像TextEditingController一样正常工作。

MenuAnchor(
  controller: _menuController,
  menuChildren: [
    const TextField(),
  ],
  builder: (context, controller, child) => TextButton(
    onPressed: () {
      if (controller.isOpen) {
        controller.close();
      } else {
        controller.open();
      }
    },
    child: ...
  ),
);
n3h0vuf2

n3h0vuf21#

您面临的问题是,当光标位于MenuAnchor中时,无法使用箭头键在TextField中移动光标,这可能与如何处理键盘焦点有关。要解决这个问题,您可以尝试使用Focus小部件来管理TextField中的键盘焦点。你可以这样做:

MenuAnchor(
  controller: _menuController,
  menuChildren: [
    Focus(
      onFocusChange: (hasFocus) {
        // This callback will be called when the TextField gets or loses focus.
        // You can use it to open or close the MenuAnchor accordingly.
        if (hasFocus) {
          _menuController.open();
        } else {
          _menuController.close();
        }
      },
      child: TextField(),
    ),
  ],
  builder: (context, controller, child) => TextButton(
    onPressed: () {
      if (controller.isOpen) {
        controller.close();
      } else {
        controller.open();
      }
    },
    child: ...
  ),
);

在此代码中,Focus小部件包裹在TextField周围,onFocusChange回调用于在TextField获得或失去焦点时打开或关闭MenuAnchor。这应该允许您按预期使用箭头键在TextField中移动光标。

相关问题