diff --git a/ios/Classes/1.5/FLB2FlutterViewContainer.m b/ios/Classes/1.5/FLB2FlutterViewContainer.m
index b7c49ddf5878dda9480cb7692d2d52ba33b01a62..3414dac38fdda736a98bffb2d5635220de648e88 100755
--- a/ios/Classes/1.5/FLB2FlutterViewContainer.m
+++ b/ios/Classes/1.5/FLB2FlutterViewContainer.m
@@ -45,6 +45,8 @@
     if(self = [super initWithEngine:FLUTTER_APP.flutterProvider.engine
                             nibName:nil
                              bundle:nil]){
+        //NOTES:在present页面时,默认是全屏,如此可以触发底层VC的页面事件。否则不会触发而导致异常
+        self.modalPresentationStyle = UIModalPresentationFullScreen;
         [self _setup];
     }
     return self;
@@ -196,6 +198,12 @@ static NSUInteger kInstanceCounter = 0;
                                                  uniqueId:self.uniqueIDString];
     [[[UIApplication sharedApplication] keyWindow] endEditing:YES];
     [super viewWillDisappear:animated];
+    
+    //NOTES:因为UIViewController在present view后dismiss其页面的view disappear会发生在下一个页面view appear之后,从而让当前engine持有的vc inactive,此处可驱使其重新resume
+    if (![self.uniqueIDString isEqualToString:[(FLB2FlutterViewContainer*)FLUTTER_VC uniqueIDString]])
+    {
+        [FLUTTER_APP resume];
+    }
 }
 
 
@@ -207,6 +215,13 @@ static NSUInteger kInstanceCounter = 0;
                                                 uniqueId:self.uniqueIDString];
     [super viewDidDisappear:animated];
     
+    //NOTES:因为UIViewController在present view后dismiss其页面的view disappear会发生在下一个页面view appear之后,导致当前engine持有的VC被surfaceUpdate(NO),从而销毁底层的raster。此处是考虑到这种情形,重建surface
+    if (FLUTTER_VC.beingPresented || self.beingDismissed || ![self.uniqueIDString isEqualToString:[(FLB2FlutterViewContainer*)FLUTTER_VC uniqueIDString]])
+    {
+        [FLUTTER_APP resume];
+        [(FLB2FlutterViewContainer*)FLUTTER_VC surfaceUpdated:YES];
+    }
+    
 }
 
 - (void)installSplashScreenViewIfNecessary {