首页 > 解决方案 > 在不单击菜单项的情况下关闭 SelectableText 的上下文菜单

问题描述

在原生的情况下,如果我单击任何空白区域或按后退按钮,菜单就会消失。在 Flutter 的情况下,单击空白区域不会执行任何操作,然后按返回按钮会关闭应用程序。如果不单击“复制”之类的项目,就没有办法关闭上下文菜单吗?

此外,当我为 Windows 桌面运行相同的项目时,选择文本不会显示上下文菜单。我尝试了右键单击和长左键单击,但它们都没有使上下文菜单出现。如何在 Windows 上显示菜单?

在此处输入图像描述

        SelectableText(
          "Hello world",
        ),

标签: flutter

解决方案


用点击事件(即 GestureDetector)包裹你的 Scaffold,并使用 FocusScopeNode 和 unfocus() 来关闭 SelectableText

return GestureDetector(
  onTap: () {
    FocusScopeNode currentFocus = FocusScope.of(context);
    if(!currentFocus.hasPrimaryFocus) {
      currentFocus.focusedChild.unfocus();
    }
  },
  child: Scaffold(
    body: SelectableText("Hello World")
  )
)

推荐阅读