0

我正在编写一个针对 macOS 的 Flutter 应用程序,并希望能够显示一个允许在该对话框中导航的模式对话框(有点像一系列引导屏幕)。

为了便于在对话框中导航,我需要将我的小部件包装在某种导航器中。请参阅以下(简化)代码:

showDialog(
  context: context,
  builder: (context) => Dialog(
    child: SizedBox(
      width: 400,
      height: 400,
      child: Navigator(
        onGenerateRoute: (_) => MaterialPageRoute(
          builder: (_) => const Center(child: Text('hi there'))
        ),
      ),
    ),
  ),
);

现在这完美无缺 - 除了解雇。我可以通过点击障碍区域来关闭对话框(这很好),但是,按键盘上的 ESC 不会关闭对话框。

如果我只是直接嵌入孩子(没有导航器),按 ESC 会完美地关闭对话框。但由于某种原因,它看起来像是Navigator在吞下 ESC 键。我也尝试过MaterialApp用作导航器,它也吃掉了 ESC 键。

关于如何让导航器让我使用 ESC 键关闭对话框的任何理论?谢谢

4

1 回答 1

1

您可以使用RawKeyboardListener来监听按键,并在 ESC 事件触发时弹出。

无效的旧响应:尝试Center使用WillPopScope. 您应该能够onWillPop在内部收到回调之前收到 ESC 事件Navigator,然后您可以调用pop外部Navigator来关闭对话框。

于 2021-08-12T00:50:02.350 回答