diff --git a/ios/Classes/FlutterBoostPlugin.h b/ios/Classes/FlutterBoostPlugin.h index fbee90d17..3a4533760 100644 --- a/ios/Classes/FlutterBoostPlugin.h +++ b/ios/Classes/FlutterBoostPlugin.h @@ -41,6 +41,7 @@ typedef void (^FBVoidCallback)(void); - (void)containerDisappeared:(id)container; - (void)containerDestroyed:(id)container; - (void)onBackSwipe; +- (void)removeContainerWhenDealloc:(id)container; - (FBVoidCallback)addEventListener:(FBEventListener)listener forName:(NSString *)key; + (FlutterBoostPlugin* )getPlugin:(FlutterEngine*)engine ; diff --git a/ios/Classes/FlutterBoostPlugin.m b/ios/Classes/FlutterBoostPlugin.m index ab89f2fc1..5a3cfd869 100644 --- a/ios/Classes/FlutterBoostPlugin.m +++ b/ios/Classes/FlutterBoostPlugin.m @@ -85,10 +85,13 @@ - (void)containerDestroyed:(id)vc { [self.flutterApi removeRouteParam:params completion:^(NSError * e) { }]; - [self.containerManager removeContainerByUniqueId:vc.uniqueIDString]; - if (self.containerManager.containerSize == 0) { - [FBLifecycle pause]; - } +} + +- (void)removeContainerWhenDealloc:(id)container { + [self.containerManager removeContainerByUniqueId:container.uniqueIDString]; + if (self.containerManager.containerSize == 0) { + [FBLifecycle pause]; + } } + (void)registerWithRegistrar:(NSObject *)registrar { diff --git a/ios/Classes/container/FBFlutterViewContainer.m b/ios/Classes/container/FBFlutterViewContainer.m index 0ec7795e3..6a45621bd 100644 --- a/ios/Classes/container/FBFlutterViewContainer.m +++ b/ios/Classes/container/FBFlutterViewContainer.m @@ -204,6 +204,7 @@ - (void)dealloc { if (self.removeEventCallback != nil) { self.removeEventCallback(); } + [FB_PLUGIN removeContainerWhenDealloc:self]; [NSNotificationCenter.defaultCenter removeObserver:self]; _leftEdgeGesture.delegate = nil; }