1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 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)
}
})
}
}