【Flutter】FlutterBoost相关的一个小问题


FlutterBoost是单引擎

每次push新的Flutter页面都是用一个新的native的controller去承载它

这个Flutter页面的生命周期会跟native的controller的生命周期关联起来

从本质上说native的controller只是一个“显示器”

这个“显示器”里播放什么画面取决于Flutter引擎这个”主机“

那么这个”主机“什么时候切画面呢

iOS侧是在viewWillAppear与viewDidAppear的时候做切换

viewWillDisappear与viewDidDisappear则没有任何操作

如果有什么因素导致下个FlutterController的Appear方法已经执行但是当前FlutterController还没有Disappear

那就会导致当前FlutterController展示的内容切换成下个FlutterController要展示的内容

然后push到下个页面

返回的时候也会看到回到上个页面之后看到的还是当前页面的内容

然后闪一下变回上个页面的内容

最近发现了一个这种情况的实例

那就是FlutterControllerA present了一个其他页面X

然后在这个页面X关闭的回调里push了另一个FlutterControllerB

如果这个关闭的回调没有放在dismiss方法的completion里就会出现上面所说的问题