import Cocoa import FlutterMacOS class MainFlutterWindow: NSWindow { override func awakeFromNib() { let flutterViewController = FlutterViewController.init() // 先不显示窗口 self.isReleasedWhenClosed = false self.contentViewController = flutterViewController self.setFrame(self.frame, display: true) // 背景别用默认黑色 self.isOpaque = false self.backgroundColor = .clear RegisterGeneratedPlugins(registry: flutterViewController) // 监听首帧渲染完成再显示窗口 NotificationCenter.default.addObserver( forName: NSNotification.Name("io.flutter.embedding.engine.firstFrame"), object: flutterViewController.engine, queue: .main ) { [weak self] _ in self?.makeKeyAndOrderFront(nil) NSApp.activate(ignoringOtherApps: true) } // 不在这里调用 makeKeyAndOrderFront super.awakeFromNib() } }