1
engine/src/flutter/.gitignore
vendored
1
engine/src/flutter/.gitignore
vendored
@@ -20,3 +20,4 @@ tags
|
||||
Thumbs.db
|
||||
.idea
|
||||
pubspec.lock
|
||||
.vscode/
|
||||
|
||||
@@ -78,7 +78,7 @@ FLUTTER_EXPORT
|
||||
* tree-shaken by the Dart compiler.
|
||||
* @return YES if the call succeeds in creating and running a Flutter Engine instance; NO otherwise.
|
||||
*/
|
||||
- (bool)runWithEntrypoint:(NSString*)entrypoint;
|
||||
- (BOOL)runWithEntrypoint:(NSString*)entrypoint;
|
||||
|
||||
/**
|
||||
* Runs a Dart program on an Isolate using the specified entrypoint and Dart library,
|
||||
@@ -95,7 +95,7 @@ FLUTTER_EXPORT
|
||||
* this will default to the same library as the `main()` function in the Dart program.
|
||||
* @return YES if the call succeeds in creating and running a Flutter Engine instance; NO otherwise.
|
||||
*/
|
||||
- (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)uri;
|
||||
- (BOOL)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)uri;
|
||||
|
||||
/**
|
||||
* Sets the `FlutterViewController` for this instance. The FlutterEngine must be
|
||||
|
||||
@@ -264,10 +264,10 @@
|
||||
}));
|
||||
}
|
||||
|
||||
- (bool)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI {
|
||||
- (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryURI {
|
||||
if (_shell != nullptr) {
|
||||
FML_LOG(WARNING) << "This FlutterEngine was already invoked.";
|
||||
return false;
|
||||
return NO;
|
||||
}
|
||||
|
||||
static size_t shellCount = 1;
|
||||
@@ -351,13 +351,20 @@
|
||||
<< entrypoint.UTF8String;
|
||||
} else {
|
||||
[self maybeSetupPlatformViewChannels];
|
||||
}
|
||||
|
||||
return _shell != nullptr;
|
||||
}
|
||||
|
||||
- (BOOL)runWithEntrypoint:(NSString*)entrypoint libraryURI:(NSString*)libraryURI {
|
||||
if ([self createShell:entrypoint libraryURI:libraryURI]) {
|
||||
[self launchEngine:entrypoint libraryURI:libraryURI];
|
||||
}
|
||||
|
||||
return _shell != nullptr;
|
||||
}
|
||||
|
||||
- (bool)runWithEntrypoint:(NSString*)entrypoint {
|
||||
- (BOOL)runWithEntrypoint:(NSString*)entrypoint {
|
||||
return [self runWithEntrypoint:entrypoint libraryURI:nil];
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
- (shell::FlutterPlatformViewsController*)platformViewsController;
|
||||
- (FlutterTextInputPlugin*)textInputPlugin;
|
||||
- (void)launchEngine:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil;
|
||||
- (BOOL)createShell:(NSString*)entrypoint libraryURI:(NSString*)libraryOrNil;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
blink::ViewportMetrics _viewportMetrics;
|
||||
BOOL _initialized;
|
||||
BOOL _viewOpaque;
|
||||
BOOL _engineNeedsLaunch;
|
||||
}
|
||||
|
||||
#pragma mark - Manage and override all designated initializers
|
||||
@@ -49,6 +50,7 @@
|
||||
if (self) {
|
||||
_viewOpaque = YES;
|
||||
_engine.reset([engine retain]);
|
||||
_engineNeedsLaunch = NO;
|
||||
_flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]);
|
||||
_weakFactory = std::make_unique<fml::WeakPtrFactory<FlutterViewController>>(self);
|
||||
|
||||
@@ -68,8 +70,8 @@
|
||||
_weakFactory = std::make_unique<fml::WeakPtrFactory<FlutterViewController>>(self);
|
||||
_engine.reset([[FlutterEngine alloc] initWithName:@"io.flutter" project:projectOrNil]);
|
||||
_flutterView.reset([[FlutterView alloc] initWithDelegate:_engine opaque:self.isViewOpaque]);
|
||||
[_engine.get() runWithEntrypoint:nil];
|
||||
[_engine.get() setViewController:self];
|
||||
[_engine.get() createShell:nil libraryURI:nil];
|
||||
_engineNeedsLaunch = YES;
|
||||
|
||||
[self performCommonViewControllerInitialization];
|
||||
}
|
||||
@@ -371,6 +373,12 @@
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
TRACE_EVENT0("flutter", "viewWillAppear");
|
||||
|
||||
if (_engineNeedsLaunch) {
|
||||
[_engine.get() launchEngine:nil libraryURI:nil];
|
||||
[_engine.get() setViewController:self];
|
||||
_engineNeedsLaunch = NO;
|
||||
}
|
||||
|
||||
// Only recreate surface on subsequent appearances when viewport metrics are known.
|
||||
// First time surface creation is done on viewDidLayoutSubviews.
|
||||
if (_viewportMetrics.physical_width)
|
||||
|
||||
Reference in New Issue
Block a user