#import <FlutterViewController.h>
Instance Methods | |
(instancetype) | - initWithEngine:nibName:bundle: |
(instancetype) | - initWithProject:nibName:bundle: |
(instancetype) | - initWithProject:initialRoute:nibName:bundle: |
(instancetype) | - initWithCoder: |
(void) | - setFlutterViewDidRenderCallback: |
(NSString *) | - lookupKeyForAsset: |
(NSString *) | - lookupKeyForAsset:fromPackage: |
(void) | - setInitialRoute: |
(void) | - popRoute |
(void) | - pushRoute: |
(id< FlutterPluginRegistry >) | - pluginRegistry |
(BOOL) | - loadDefaultSplashScreenView |
Instance Methods inherited from <FlutterTextureRegistry> | |
(int64_t) | - registerTexture: |
(void) | - textureFrameAvailable: |
(void) | - unregisterTexture: |
Instance Methods inherited from <FlutterPluginRegistry> | |
(nullable NSObject< FlutterPluginRegistrar > *) | - registrarForPlugin: |
(BOOL) | - hasPlugin: |
(nullable NSObject *) | - valuePublishedByPlugin: |
Class Methods | |
(BOOL) | + isUIAccessibilityIsVoiceOverRunning |
Properties | |
BOOL | displayingFlutterUI |
UIView * | splashScreenView |
BOOL | viewOpaque |
FlutterEngine * | engine |
NSObject< FlutterBinaryMessenger > * | binaryMessenger |
BOOL | engineAllowHeadlessExecution |
A UIViewController
implementation for Flutter views.
Dart execution, channel communication, texture registration, and plugin registration are all handled by FlutterEngine
. Calls on this class to those members all proxy through to the FlutterEngine
attached FlutterViewController.
A FlutterViewController can be initialized either with an already-running FlutterEngine
via the initWithEngine:
initializer, or it can be initialized with a FlutterDartProject
that will be used to implicitly spin up a new FlutterEngine
. Creating a FlutterEngine
before showing a FlutterViewController can be used to pre-initialize the Dart VM and to prepare the isolate in order to reduce the latency to the first rendered frame. See https://docs.flutter.cn/development/add-to-app/performance for more details on loading latency.
Holding a FlutterEngine
independently of FlutterViewControllers can also be used to not to lose Dart-related state and asynchronous tasks when navigating back and forth between a FlutterViewController and other UIViewController
s.
Definition at line 56 of file FlutterViewController.h.
- (instancetype) initWithCoder: | (NSCoder*) | NS_DESIGNATED_INITIALIZER |
Initializer that is called from loading a FlutterViewController from a XIB.
See also: https://developer.apple.com/documentation/foundation/nscoding/1416145-initwithcoder?language=objc
Definition at line 218 of file FlutterViewController.mm.
- (instancetype) initWithEngine: | (FlutterEngine*) | engine | |
nibName: | (nullable NSString*) | nibName | |
bundle: | (nullable NSBundle*) | NS_DESIGNATED_INITIALIZER | |
Initializes this FlutterViewController with the specified FlutterEngine
.
The initialized viewcontroller will attach itself to the engine as part of this process.
engine | The FlutterEngine instance to attach to. Cannot be nil. |
nibName | The NIB name to initialize this UIViewController with. |
nibBundle | The NIB bundle. |
Definition at line 161 of file FlutterViewController.mm.
References _engine, _engineNeedsLaunch, _flutterView, _ongoingTouches, _viewOpaque, _weakFactory, and engine.
- (instancetype) initWithProject: | (nullable FlutterDartProject *) | project | |
initialRoute: | (nullable NSString *) | initialRoute | |
nibName: | (nullable NSString *) | nibName | |
bundle: | (nullable NSBundle *) | NS_DESIGNATED_INITIALIZER | |
Initializes a new FlutterViewController and FlutterEngine
with the specified FlutterDartProject
and initialRoute
.
This will implicitly create a new FlutterEngine
which is retrievable via the engine
property after initialization.
project | The FlutterDartProject to initialize the FlutterEngine with. |
initialRoute | The initial Navigator route to load. |
nibName | The NIB name to initialize this UIViewController with. |
nibBundle | The NIB bundle. |
- (instancetype) initWithProject: | (nullable FlutterDartProject *) | project | |
nibName: | (nullable NSString *) | nibName | |
bundle: | (nullable NSBundle *) | NS_DESIGNATED_INITIALIZER | |
Initializes a new FlutterViewController and FlutterEngine
with the specified FlutterDartProject
.
This will implicitly create a new FlutterEngine
which is retrievable via the engine
property after initialization.
project | The FlutterDartProject to initialize the FlutterEngine with. |
nibName | The NIB name to initialize this UIViewController with. |
nibBundle | The NIB bundle. |
+ (BOOL) isUIAccessibilityIsVoiceOverRunning |
A wrapper around UIAccessibilityIsVoiceOverRunning().
As a C function, UIAccessibilityIsVoiceOverRunning() cannot be mocked in testing. Mock this class method to testing features depends on UIAccessibilityIsVoiceOverRunning().
Definition at line 2397 of file FlutterViewController.mm.
- (BOOL) loadDefaultSplashScreenView |
Attempts to set the splashScreenView
property from the UILaunchStoryboardName
from the main bundle's Info.plist
file. This method will not change the value of splashScreenView
if it cannot find a default one from a storyboard or nib.
YES
if successful, NO
otherwise. Definition at line 673 of file FlutterViewController.mm.
- (NSString *) lookupKeyForAsset: | (NSString*) | asset |
Returns the file name for the given asset. The returned file name can be used to access the asset in the application's main bundle.
asset | The name of the asset. The name can be hierarchical. |
Definition at line 2385 of file FlutterViewController.mm.
References FlutterDartProject::lookupKeyForAsset:.
- (NSString *) lookupKeyForAsset: | (NSString*) | asset | |
fromPackage: | (NSString*) | package | |
Returns the file name for the given asset which originates from the specified package. The returned file name can be used to access the asset in the application's main bundle.
asset | The name of the asset. The name can be hierarchical. |
package | The name of the package from which the asset originates. |
Definition at line 2389 of file FlutterViewController.mm.
References FlutterDartProject::lookupKeyForAsset:fromPackage:.
- (id< FlutterPluginRegistry >) pluginRegistry |
The FlutterPluginRegistry
used by this FlutterViewController.
Definition at line 2393 of file FlutterViewController.mm.
References _engine.
- (void) popRoute |
Instructs the Flutter Navigator (if any) to go back.
Definition at line 453 of file FlutterViewController.mm.
- (void) pushRoute: | (NSString*) | route |
Instructs the Flutter Navigator (if any) to push a route on to the navigation stack.
route | The name of the route to push to the navigation stack. |
Definition at line 457 of file FlutterViewController.mm.
- (void) setFlutterViewDidRenderCallback: | (void(^)(void)) | callback |
Registers a callback that will be invoked when the Flutter view has been rendered. The callback will be fired only once.
Replaces an existing callback. Use a nil
callback to unregister the existing one.
Definition at line 732 of file FlutterViewController.mm.
References _flutterViewRenderedCallback.
- (void) setInitialRoute: | ("Use FlutterViewController initializer to specify initial route") | FLUTTER_DEPRECATED |
Deprecated API to set initial route.
Attempts to set the first route that the Flutter app shows if the Flutter runtime hasn't yet started. The default is "/".
This method must be called immediately after initWithProject
and has no effect when using initWithEngine
if the FlutterEngine
has already been run.
Setting this after the Flutter started running has no effect. See pushRoute
and popRoute
to change the route after Flutter started running.
This is deprecated because it needs to be called at the time of initialization and thus should just be in the initWithProject
initializer. If using initWithEngine
, the initial route should be set on the engine's initializer.
route | The name of the first route to show. |
|
readnonatomicassign |
The FlutterBinaryMessenger
associated with this FlutterViewController (used for communicating with channels).
This is just a convenient way to get the |FlutterEngine|'s binary messenger.
Definition at line 243 of file FlutterViewController.h.
|
readnonatomicassign |
True if at least one frame has rendered and the ViewController has appeared.
This property is reset to false when the ViewController disappears. It is guaranteed to only alternate between true and false for observers.
Definition at line 197 of file FlutterViewController.h.
|
readnonatomicweak |
The FlutterEngine
instance for this view controller. This could be the engine this FlutterViewController
is initialized with or a new FlutterEngine
implicitly created if no engine was supplied during initialization.
Definition at line 235 of file FlutterViewController.h.
|
readnonatomicassign |
If the FlutterViewController
creates a FlutterEngine
, this property determines if that FlutterEngine
has allowHeadlessExecution
set.
The intention is that this is used with the XIB. Otherwise, a FlutterEngine
can just be sent to the init methods.
See also: -[FlutterEngine initWithName:project:allowHeadlessExecution:]
Definition at line 254 of file FlutterViewController.h.
|
readwritenonatomicstrong |
Specifies the view to use as a splash screen. Flutter's rendering is asynchronous, so the first frame rendered by the Flutter application might not immediately appear when the Flutter view is initially placed in the view hierarchy. The splash screen view will be used as a replacement until the first frame is rendered.
The view used should be appropriate for multiple sizes; an autoresizing mask to have a flexible width and height will be applied automatically.
Set to nil to remove the splash screen view.
Definition at line 210 of file FlutterViewController.h.
|
readwritenonatomicassign |
Controls whether the created view will be opaque or not.
Default is YES
. Note that setting this to NO
may negatively impact performance when using hardware acceleration, and toggling this will trigger a re-layout of the view.
Definition at line 228 of file FlutterViewController.h.