| Flutter iOS Embedder |

Instance Methods | List of all members
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

  name | The name that will present in the threads shared across the engines in this group.
  project | The `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

  entrypoint | The 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.
  libraryURI | The 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

  entrypoint | The 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.
  libraryURI | The 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.
  initialRoute | The 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

  options | Options 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
53 FlutterEngine* engine;
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:

- shell/platform/darwin/ios/framework/Headers/FlutterEngineGroup.h
- shell/platform/darwin/ios/framework/Source/FlutterEngineGroup.mm

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)