From 1920e77f93e92014133956db9b4d882a9cfce611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=99=E7=8E=A0?= <xujian.xj@alibaba-inc.com> Date: Sat, 21 Mar 2020 22:42:43 +0800 Subject: [PATCH] =?UTF-8?q?cherry=20pick=20from=20v1.12.13-hotfixes:=20?= =?UTF-8?q?=E8=A7=A3=E5=86=B3bug=EF=BC=9Ahttps://github.com/flutter/flutte?= =?UTF-8?q?r/issues/52455?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../container/FLBFlutterViewContainer.m | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/ios/Classes/container/FLBFlutterViewContainer.m b/ios/Classes/container/FLBFlutterViewContainer.m index e3aed44..9350b47 100755 --- a/ios/Classes/container/FLBFlutterViewContainer.m +++ b/ios/Classes/container/FLBFlutterViewContainer.m @@ -36,7 +36,8 @@ @interface FlutterViewController (bridgeToviewDidDisappear) - (void)flushOngoingTouches; -- (void)override_viewDidDisappear:(BOOL)animated; +- (void)bridge_viewDidDisappear:(BOOL)animated; +- (void)bridge_viewWillAppear:(BOOL)animated; @end #pragma clang diagnostic push @@ -48,7 +49,20 @@ [super viewDidDisappear:animated]; } +- (void)bridge_viewWillAppear:(BOOL)animated{ +// TRACE_EVENT0("flutter", "viewWillAppear"); + +// if (_engineNeedsLaunch) { +// [_engine.get() launchEngine:nil libraryURI:nil]; +// [_engine.get() setViewController:self]; +// _engineNeedsLaunch = NO; +// } + [FLUTTER_APP inactive]; + + [super viewWillAppear:animated]; +} @end +#pragma pop @interface FLBFlutterViewContainer () @property (nonatomic,strong,readwrite) NSDictionary *params; @@ -75,6 +89,13 @@ return self; } +- (instancetype)initWithProject:(FlutterDartProject*)projectOrNil + nibName:(NSString*)nibNameOrNil + bundle:(NSBundle*)nibBundleOrNil { + NSAssert(NO, @"unsupported init method!"); + return nil; +} + #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wobjc-designated-initializers" - (instancetype)initWithCoder:(NSCoder *)aDecoder{ @@ -190,6 +211,8 @@ static NSUInteger kInstanceCounter = 0; //For new page we should attach flutter view in view will appear //for better performance. + [self attatchFlutterEngine]; + [BoostMessageChannel willShowPageContainer:^(NSNumber *result) {} pageName:_name params:_params @@ -200,8 +223,8 @@ static NSUInteger kInstanceCounter = 0; [FlutterBoostPlugin sharedInstance].fParams = _params; - [self attatchFlutterEngine]; - [super viewWillAppear:animated]; + + [super bridge_viewWillAppear:animated]; [self.view setNeedsLayout];//TODO:通过paramæ¥è®¾å®š } @@ -216,6 +239,8 @@ static NSUInteger kInstanceCounter = 0; pageName:_name params:_params uniqueId:self.uniqueIDString]; + //NOTES:务必在show之åŽå†update,å¦åˆ™æœ‰é—ªçƒ; 或导致侧滑返回时上一个页é¢ä¼šå’Œtop页é¢å†…å®¹ä¸€æ · + [self surfaceUpdated:YES]; [super viewDidAppear:animated]; } @@ -228,13 +253,6 @@ 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:[(FLBFlutterViewContainer*)FLUTTER_VC uniqueIDString]]) - { - [FLUTTER_APP resume]; - } - } @@ -244,14 +262,6 @@ static NSUInteger kInstanceCounter = 0; pageName:_name params:_params uniqueId:self.uniqueIDString]; - - //NOTES:å› ä¸ºUIViewController在present viewåŽdismiss其页é¢çš„view disappear会å‘生在下一个页é¢view appear之åŽï¼Œå¯¼è‡´å½“å‰engineæŒæœ‰çš„VC被surfaceUpdate(NO),从而销æ¯åº•å±‚çš„raster。æ¤å¤„是考虑到这ç§æƒ…形,é‡å»ºsurface - if (FLUTTER_VC.beingPresented || self.beingDismissed /*|| ![self.uniqueIDString isEqualToString:[(FLBFlutterViewContainer*)FLUTTER_VC uniqueIDString]]*/) - { - [FLUTTER_APP resume]; - [(FLBFlutterViewContainer*)FLUTTER_VC surfaceUpdated:YES]; - } - [self bridge_viewDidDisappear:animated]; } -- 2.26.2