8937044f55
windowManager.hide() 走 orderOut: 后主窗口不可见,点 Dock 图标系统只发 applicationShouldHandleReopen(hasVisibleWindows=false),AppDelegate 未接管 → 点了没反应。AppDelegate 实现该回调,无可见窗口时 makeKeyAndOrderFront + activate 唤回 mainFlutterWindow。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
26 lines
974 B
Swift
26 lines
974 B
Swift
import Cocoa
|
|
import FlutterMacOS
|
|
|
|
@main
|
|
class AppDelegate: FlutterAppDelegate {
|
|
// 托盘常驻:关闭窗口只隐藏到托盘,不终止 app(window_manager preventClose + hide
|
|
// 负责隐藏;此处 false 兜底,确保即便窗口真关闭 app 也留在托盘)。
|
|
override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
|
|
return false
|
|
}
|
|
|
|
override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
|
|
return true
|
|
}
|
|
|
|
// 隐藏到托盘后点 Dock 图标 → 唤回主窗口。窗口被 window_manager.hide()(orderOut:)
|
|
// 隐藏时 hasVisibleWindows=false,系统只发 reopen 事件、不会自动显示;不接管就"点了没反应"。
|
|
override func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
|
|
if !flag {
|
|
mainFlutterWindow?.makeKeyAndOrderFront(nil)
|
|
NSApp.activate(ignoringOtherApps: true)
|
|
}
|
|
return true
|
|
}
|
|
}
|