// 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 Foundation import AppKit protocol NativeViewControllerDelegate: NSObjectProtocol { func didTapIncrementButton() } /** The code behind a native view to be displayed in the `MainFlutterViewController` as an embed segue. If any storyboard view inherits from this class definition, it should contain a function to handle for `handleIncrement` */ class NativeViewController: NSViewController { var count: Int? var labelText: String { get { let count = self.count ?? 0 return "Flutter button tapped \(count) time\(count == 1 ? "" : "s")" } } var delegate: NativeViewControllerDelegate? @IBOutlet weak var incrementLabel: NSTextField! @IBAction func handleIncrement(_ sender: Any) { self.delegate?.didTapIncrementButton() } override func viewDidLoad() { super.viewDidLoad() setState(for: 0) } func didReceiveIncrement() { setState(for: (self.count ?? 0) + 1) } func setState(for count: Int) { self.count = count self.incrementLabel.stringValue = labelText } }