Flutter iOS Embedder
FlutterEngineGroup Class Reference

#import <FlutterEngineGroup.h>

Inheritance diagram for FlutterEngineGroup:

Instance Methods

(instancetype) - NS_UNAVAILABLE
 
(instancetype) - initWithName:project:
 
(FlutterEngine *) - makeEngineWithEntrypoint:libraryURI:
 
(FlutterEngine *) - makeEngineWithEntrypoint:libraryURI:initialRoute:
 
(FlutterEngine *) - makeEngineWithOptions:
 

Detailed Description

Represents a collection of FlutterEngines who share resources which allows them to be created with less time const and occupy less memory than just creating multiple FlutterEngines.

Deleting a FlutterEngineGroup doesn't invalidate existing FlutterEngines, but it eliminates the possibility to create more FlutterEngines in that group.

Warning
This class is a work-in-progress and may change.
See also
https://github.com/flutter/flutter/issues/72009

Definition at line 56 of file FlutterEngineGroup.h.

Method Documentation

◆ initWithName:project:

- (instancetype) initWithName: (NSString*)  name
project: (nullable FlutterDartProject*)  NS_DESIGNATED_INITIALIZER 

Initialize a new FlutterEngineGroup.

Parameters
nameThe name that will present in the threads shared across the engines in this group.
projectThe FlutterDartProject that all FlutterEngines in this group will be executing.

Definition at line 22 of file FlutterEngineGroup.mm.

22  :(NSString*)name project:(nullable FlutterDartProject*)project {
23  self = [super init];
24  if (self) {
25  _name = [name copy];
26  _engines = [[NSMutableArray<NSValue*> alloc] init];
27  _project = project;
28  }
29  return self;
30 }

References _name.

◆ makeEngineWithEntrypoint:libraryURI:

- (FlutterEngine *) makeEngineWithEntrypoint: (nullable NSString*)  entrypoint
libraryURI: (nullable NSString*)  libraryURI 

Creates a running FlutterEngine that shares components with this group.

Parameters
entrypointThe name of a top-level function from a Dart library. If this is FlutterDefaultDartEntrypoint (or nil); this will default to main(). If it is not the app's main() function, that function must be decorated with @pragma(vm:entry-point) to ensure the method is not tree-shaken by the Dart compiler.
libraryURIThe URI of the Dart library which contains the entrypoint method. IF nil, this will default to the same library as the main() function in the Dart program.
See also
FlutterEngineGroup

Definition at line 32 of file FlutterEngineGroup.mm.

32  :(nullable NSString*)entrypoint
33  libraryURI:(nullable NSString*)libraryURI {
34  return [self makeEngineWithEntrypoint:entrypoint libraryURI:libraryURI initialRoute:nil];
35 }

References makeEngineWithEntrypoint:libraryURI:initialRoute:.

◆ makeEngineWithEntrypoint:libraryURI:initialRoute:

- (FlutterEngine *) makeEngineWithEntrypoint: (nullable NSString*)  entrypoint
libraryURI: (nullable NSString*)  libraryURI
initialRoute: (nullable NSString*)  initialRoute 

Creates a running FlutterEngine that shares components with this group.

Parameters
entrypointThe name of a top-level function from a Dart library. If this is FlutterDefaultDartEntrypoint (or nil); this will default to main(). If it is not the app's main() function, that function must be decorated with @pragma(vm:entry-point) to ensure the method is not tree-shaken by the Dart compiler.
libraryURIThe URI of the Dart library which contains the entrypoint method. IF nil, this will default to the same library as the main() function in the Dart program.
initialRouteThe name of the initial Flutter Navigator Route to load. If this is FlutterDefaultInitialRoute (or nil), it will default to the "/" route.
See also
FlutterEngineGroup

Definition at line 37 of file FlutterEngineGroup.mm.

37  :(nullable NSString*)entrypoint
38  libraryURI:(nullable NSString*)libraryURI
39  initialRoute:(nullable NSString*)initialRoute {
40  FlutterEngineGroupOptions* options = [[FlutterEngineGroupOptions alloc] init];
41  options.entrypoint = entrypoint;
42  options.libraryURI = libraryURI;
43  options.initialRoute = initialRoute;
44  return [self makeEngineWithOptions:options];
45 }

References FlutterEngineGroupOptions::entrypoint, FlutterEngineGroupOptions::initialRoute, FlutterEngineGroupOptions::libraryURI, and makeEngineWithOptions:.

Referenced by makeEngineWithEntrypoint:libraryURI:.

◆ makeEngineWithOptions:

- (FlutterEngine *) makeEngineWithOptions: (nullable FlutterEngineGroupOptions*)  options

Creates a running FlutterEngine that shares components with this group.

Parameters
optionsOptions that control how a FlutterEngine should be created.
See also
FlutterEngineGroupOptions

Definition at line 47 of file FlutterEngineGroup.mm.

47  :(nullable FlutterEngineGroupOptions*)options {
48  NSString* entrypoint = options.entrypoint;
49  NSString* libraryURI = options.libraryURI;
50  NSString* initialRoute = options.initialRoute;
51  NSArray<NSString*>* entrypointArgs = options.entrypointArgs;
52 
54  if (self.engines.count <= 0) {
55  engine = [self makeEngine];
56  [engine runWithEntrypoint:entrypoint
57  libraryURI:libraryURI
58  initialRoute:initialRoute
59  entrypointArgs:entrypointArgs];
60  } else {
61  FlutterEngine* spawner = (FlutterEngine*)[self.engines[0] pointerValue];
62  engine = [spawner spawnWithEntrypoint:entrypoint
63  libraryURI:libraryURI
64  initialRoute:initialRoute
65  entrypointArgs:entrypointArgs];
66  }
67  // TODO(cbracken): https://github.com/flutter/flutter/issues/155943
68  [self.engines addObject:[NSValue valueWithPointer:(__bridge void*)engine]];
69 
70  NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
71  [center addObserver:self
72  selector:@selector(onEngineWillBeDealloced:)
73  name:kFlutterEngineWillDealloc
74  object:engine];
75 
76  return engine;
77 }

References engine, FlutterEngineGroupOptions::entrypoint, FlutterEngineGroupOptions::entrypointArgs, FlutterEngineGroupOptions::initialRoute, FlutterEngineGroupOptions::libraryURI, FlutterEngine::runWithEntrypoint:libraryURI:initialRoute:entrypointArgs:, and FlutterEngine::spawnWithEntrypoint:libraryURI:initialRoute:entrypointArgs:.

Referenced by makeEngineWithEntrypoint:libraryURI:initialRoute:.

◆ NS_UNAVAILABLE

- (instancetype) NS_UNAVAILABLE

The documentation for this class was generated from the following files:
FlutterEngine
Definition: FlutterEngine.h:61
FlutterEngineGroupOptions::libraryURI
NSString * libraryURI
Definition: FlutterEngineGroup.h:30
FlutterEngineGroupOptions::entrypoint
NSString * entrypoint
Definition: FlutterEngineGroup.h:24
FlutterEngineGroupOptions::initialRoute
NSString * initialRoute
Definition: FlutterEngineGroup.h:36
FlutterEngineGroupOptions
Definition: FlutterEngineGroup.h:16
engine
id engine
Definition: FlutterTextInputPluginTest.mm:89
_name
NSString * _name
Definition: FlutterChannels.mm:68
FlutterDartProject
Definition: FlutterDartProject.mm:258
-[FlutterEngine spawnWithEntrypoint:libraryURI:initialRoute:entrypointArgs:]
FlutterEngine * spawnWithEntrypoint:libraryURI:initialRoute:entrypointArgs:(/*nullable */NSString *entrypoint,[libraryURI]/*nullable */NSString *libraryURI,[initialRoute]/*nullable */NSString *initialRoute,[entrypointArgs]/*nullable */NSArray< NSString * > *entrypointArgs)
-[FlutterEngine runWithEntrypoint:libraryURI:initialRoute:entrypointArgs:]
BOOL runWithEntrypoint:libraryURI:initialRoute:entrypointArgs:(nullable NSString *entrypoint,[libraryURI] nullable NSString *libraryURI,[initialRoute] nullable NSString *initialRoute,[entrypointArgs] nullable NSArray< NSString * > *entrypointArgs)