| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import Cocoa | |
| import FlutterMacOS | |
| /** | |
| The main application window. | |
| Performs Flutter app initialization, and handles channel method calls over the | |
| `samples.flutter.io/platform_view` channel. | |
| */ | |
| class MainFlutterWindow: NSWindow { | |
| override func awakeFromNib() { | |
| let flutterViewController = FlutterViewController() | |
| let windowFrame = self.frame | |
| self.contentViewController = flutterViewController | |
| self.setFrame(windowFrame, display: true) | |
| RegisterGeneratedPlugins(registry: flutterViewController) | |
| RegisterMethodChannel(registry: flutterViewController) | |
| super.awakeFromNib() | |
| } | |
| func RegisterMethodChannel(registry: FlutterPluginRegistry) { | |
| let registrar = registry.registrar(forPlugin: "platform_view") | |
| let channel = FlutterMethodChannel(name: "samples.flutter.io/platform_view", | |
| binaryMessenger: registrar.messenger) | |
| channel.setMethodCallHandler({ (call, result) in | |
| if (call.method == "switchView") { | |
| let count = call.arguments as! Int | |
| let controller: NSViewController = PlatformViewController( | |
| withCount: count, | |
| onClose: { platformViewController in | |
| result(platformViewController.count) | |
| } | |
| ) | |
| self.contentViewController?.presentAsSheet(controller) | |
| } | |
| }) | |
| } | |
| } |