Flutter macOS Embedder
FlutterViewController_Internal.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_SHELL_PLATFORM_DARWIN_MACOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_
6 #define FLUTTER_SHELL_PLATFORM_DARWIN_MACOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_
7 
9 
10 #include <memory>
11 
15 
16 @interface FlutterViewController ()
17 
18 // The FlutterView for this view controller.
19 @property(nonatomic, readonly, nullable) FlutterView* flutterView;
20 
21 @property(nonatomic, readonly) std::weak_ptr<flutter::AccessibilityBridgeMac> accessibilityBridge;
22 
23 @property(nonatomic, nullable) NSString* applicationLocale;
24 
25 /**
26  * Returns YES if provided event is being currently redispatched by keyboard manager.
27  */
28 - (BOOL)isDispatchingKeyEvent:(nonnull NSEvent*)event;
29 
30 /**
31  * Set up the controller with `engine` and `id`, and other engine-level classes.
32  *
33  * This method is called by FlutterEngine. A view controller must be set up
34  * before being used, and must be set up only once until detachFromEngine:.
35  */
36 - (void)setUpWithEngine:(nonnull FlutterEngine*)engine
37  viewIdentifier:(FlutterViewIdentifier)viewIdentifier;
38 
39 /**
40  * Reset the `engine` and `id` of this controller.
41  *
42  * This method is called by FlutterEngine.
43  */
44 - (void)detachFromEngine;
45 
46 /**
47  * Called by the associated FlutterEngine when FlutterEngine#semanticsEnabled
48  * has changed.
49  */
50 - (void)notifySemanticsEnabledChanged;
51 
52 /**
53  * Notify from the framework that the semantics for this view needs to be
54  * updated.
55  */
56 - (void)updateSemantics:(nonnull const FlutterSemanticsUpdate2*)update;
57 
58 /**
59  * Removes this controller from the engine. The controller is removed from the engine
60  * on dealloc, however in multi-window scenario the controller needs to be unregistered
61  * from the engine eagerly - because the FlutterView needs to be removed from the
62  * Flutter isolate before destroying the controller and window.
63  */
64 - (void)dispose;
65 
66 @end
67 
68 // Private methods made visible for testing
70 - (void)onAccessibilityStatusChanged:(BOOL)enabled;
71 
72 /* Creates an accessibility bridge with the provided parameters.
73  *
74  * By default this method calls AccessibilityBridgeMac's initializer. Exposing
75  * this method allows unit tests to override.
76  */
77 - (std::shared_ptr<flutter::AccessibilityBridgeMac>)createAccessibilityBridgeWithEngine:
78  (nonnull FlutterEngine*)engine;
79 
80 - (nonnull FlutterView*)createFlutterViewWithMTLDevice:(nonnull id<MTLDevice>)device
81  commandQueue:(nonnull id<MTLCommandQueue>)commandQueue;
82 
83 @end
84 
85 #endif // FLUTTER_SHELL_PLATFORM_DARWIN_MACOS_FRAMEWORK_SOURCE_FLUTTERVIEWCONTROLLER_INTERNAL_H_
int64_t FlutterViewIdentifier