import Cocoa import FlutterMacOS class MainFlutterWindow: NSWindow { override func awakeFromNib() { let flutterViewController = FlutterViewController() let windowFrame = self.frame self.contentViewController = flutterViewController self.setFrame(windowFrame, display: true) self.minSize = NSSize(width: 860, height: 560) RegisterGeneratedPlugins(registry: flutterViewController) super.awakeFromNib() } /// 关窗不退出(最终拦截点)。实测(macOS 15)红点按钮的真实 action 是 AppKit /// 私有 selector `_close:`(并非文档所称的 performClose:),其内部直接调 close(), /// 会绕过 performClose/windowShouldClose/delegate 拦截——因此必须在 close() 上拦。 /// 此处 orderOut 隐藏窗口,进程/HTTP 服务/托盘保持运行;NSApp.terminate 流程中 /// 的窗口关闭不受影响(进程照常结束),真正退出只走托盘菜单。 override func close() { print("MainFlutterWindow: close() 拦截,窗口隐藏到托盘(服务继续运行)") orderOut(nil) } /// Cmd+W / 菜单"关闭窗口"走 performClose:,同样只隐藏不关闭。 override func performClose(_ sender: Any?) { orderOut(sender) } }