diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift index 2722837e..46208ccb 100644 --- a/macos/Runner/MainFlutterWindow.swift +++ b/macos/Runner/MainFlutterWindow.swift @@ -4,12 +4,26 @@ import FlutterMacOS class MainFlutterWindow: NSWindow { override func awakeFromNib() { let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame + // 先不显示窗口 + self.isReleasedWhenClosed = false self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) + 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() } }