问题:
在开发flutter页面的时候,有一个需求是在flutter页面上弹出一个背景透明的flutter页面,在iOS端需要用到present弹出,弹出页面后,点击进行dismiss后,底部页面卡死。
我们的flutter路由用的flutter_boost,,看了下在模态overfull一个新页面,dismiss的时候底部页面的生命不会触发,导致了flutter页面卡死。
解决办法:
在flutter_boost的popRoute代理方法里获取一下底部页面,然后手动调用页面的生命周期:
- (void)refreshTopContainerViewController {
id<FBFlutterContainer> container = self.containerManager.getTopSecondContainer;
/// 调用位置 判断确定是present的页面(通过opaque==false确定),获取当前弹出页面的底部页面,优先进行渲染一次防止底部页面卡死
if (container && [container isKindOfClass:[FBFlutterViewContainer class]] && container.opaque == YES) {
FBFlutterViewContainer *topVc = container;
FlutterBoost.instance.engine.viewController = topVc;
[topVc surfaceUpdated:YES];
[topVc beginAppearanceTransition:YES animated:NO];
[topVc endAppearanceTransition];
}
}