我不认为这会在MacOS的默认应用程序模板中实现.当我按下Command+W时,它没有任何react .我们如何才能在Flutter 翼中做到这一点?

推荐答案

Note: For exiting a window on mac, you need to press command+Q, this approach is if you want to specifically detect command+W.

要退出Flutter 应用程序(不适用于iOS),您可以拨打:

 SystemNavigator.pop();

如果您在内部查看它的代码,它会调用:

SystemChannels.platform.invokeMethod<void>('SystemNavigator.pop'

因此,要检测Command+W,您可以设置键盘监听程序:

 RawKeyboard.instance.addListener((key) {
      if (key.isMetaPressed && key.isKeyPressed(LogicalKeyboardKey.keyW)) {
        SystemNavigator.pop();
      }
    });

完整代码:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(MaterialApp(home: const MyApp()));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    RawKeyboard.instance.addListener((key) {
      if (key.isMetaPressed && key.isKeyPressed(LogicalKeyboardKey.keyW)) {
        SystemNavigator.pop();
      }
    });

    return Scaffold(
      body: Text("Press on the command+w key to close the app"),
    );
  }
}

Flutter相关问答推荐

Flutter:InteractiveViewer中可伸缩SVG背景上的定位小部件不对齐

在Flutter 中将参数从一个类传递到另一个类

为什么Riverpod生成器在这种情况下不生成AsyncNotiator?

CLI数据库连接后将SHA-1密钥添加到Firebase项目

Flutter :在后台实现振动

如何使用flutter_local_notification包处理通知操作?

Flutter 蜂巢不能正常工作,我正在使用蜂巢在设备上存储数据,但当我关闭并重新启动应用程序时,我失go 了一切

SingleChildScrollView在ErrorWidget.builder中不工作

FittedBox叠加技术在Flutter 中的应用

当 Dart SDK 版本范围不匹配时,为什么依赖解析器不会抛出错误?

带按钮的 Riverpod future Provider

如何给按钮的边框半径?

尽管设置了对齐方式,如何对齐列中的行?

在使用 Android 12+ 的真实 Android 设备上,SingleChildScrollView 中最初位于视口之外的无响应 Web 视图

课程中的访问Provider

什么最接近 Dart 的 List.asMap().forEach() 返回列表?

Flutter 动保存新的变量值

MediaQuery 在不同手机上不一致

扩展磁贴尾随图标在与一个磁贴交互时更新列表中的所有内容.如何只更改展开图块的图标?

"!" 是什么意思该运算符在使用如下方式时意味着dart ?