diff --git a/shell/platform/darwin/macos/framework/Source/FlutterViewController.mm b/shell/platform/darwin/macos/framework/Source/FlutterViewController.mm index 87b41b9e44a78..ffbfa255beabe 100644 --- a/shell/platform/darwin/macos/framework/Source/FlutterViewController.mm +++ b/shell/platform/darwin/macos/framework/Source/FlutterViewController.mm @@ -254,6 +254,10 @@ static void CommonInit(FlutterViewController* controller) { selector:@selector(onAccessibilityStatusChanged:) name:EnhancedUserInterfaceNotification object:nil]; + [center addObserver:controller + selector:@selector(applicationWillTerminate:) + name:NSApplicationWillTerminateNotification + object:nil]; } - (instancetype)initWithCoder:(NSCoder*)coder { @@ -557,6 +561,13 @@ - (void)dispatchMouseEvent:(NSEvent*)event phase:(FlutterPointerPhase)phase { } } +- (void)applicationWillTerminate:(NSNotification*)notification { + if (!_engine) { + return; + } + [_engine shutDownEngine]; +} + - (void)onAccessibilityStatusChanged:(NSNotification*)notification { if (!_engine) { return;