15133b8a72
macOS 登录项(launch_at_startup)注册时带 args:['--autostart'];main() 读该参数 windowManager.hide();MainFlutterWindow.awakeFromNib 检测到 --autostart 时 orderOut 兜底(避免 storyboard Visible At Launch 闪窗)。常规启动无参数,正常显示窗口。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.2 KiB
Swift
31 lines
1.2 KiB
Swift
import Cocoa
|
||
import FlutterMacOS
|
||
|
||
class MainFlutterWindow: NSWindow {
|
||
override func awakeFromNib() {
|
||
let flutterViewController = FlutterViewController()
|
||
self.contentViewController = flutterViewController
|
||
|
||
// 桌面默认窗口 920×600(对齐设计稿 ui_kits/desktop),最小 720×560。
|
||
let defaultSize = NSSize(width: 920, height: 600)
|
||
self.setContentSize(defaultSize)
|
||
self.contentMinSize = NSSize(width: 720, height: 560)
|
||
self.center()
|
||
|
||
RegisterGeneratedPlugins(registry: flutterViewController)
|
||
|
||
// P1 方案B:VPN 原生控制通道(NETunnelProviderManager 启停 PacketTunnel)。
|
||
// 需 VpnChannel.swift 已加入 Runner target 的 Compile Sources。
|
||
VpnChannel.register(with: flutterViewController.registrar(forPlugin: "VpnChannel"))
|
||
|
||
super.awakeFromNib()
|
||
|
||
// 开机自启(登录项带 --autostart):不弹主窗口,直接隐藏到托盘(与 Windows 一致)。
|
||
// Dart 侧 main() 也会 windowManager.hide();这里原生 orderOut 兜底,避免 storyboard
|
||
// "Visible At Launch" 把窗口闪出来。常规启动(无参数)正常显示。
|
||
if CommandLine.arguments.contains("--autostart") {
|
||
self.orderOut(nil)
|
||
}
|
||
}
|
||
}
|