起因:專案中使用了flutter_boost,發現側滑時直接將flutter的整個VC給pop掉了,demo中flutter程式碼跳轉到新的頁面也是使用openPage的方式開啟,因此沒有這個問題,但是我們不希望每一個新的flutter都使用openPage方式開啟(一是每次都新建一個VC浪費效能,二是會有閃爍的情況出現),經過幾天時間不斷驗證改造,終於可以算是階段性地解決了這個問題,在此做個記錄。
具體方案
先看改造後增加的流程:
下面是具體增加的點
flutter方面
1、增加了一個導航的監聽,每次push和pop時都將flutter頁面的canPop值通知到原生。
2、增加了一個原生方法回撥,原生呼叫時會通知原生介面當前的flutter頁面是否可以pop。
iOS方面
1、在FLBPlatform中增加方法(接收到flutter對應的方法時會呼叫):
- (void)flutterCanPop:(BOOL)canpop;
複製程式碼
2、在FLBFlutterViewController的showFlutterView(相當於viewWillAppear)方法中增加獲取flutter的canPop的方法。
3、增加flutterCanPop對應的接收類NavigationService_flutterCanPop
Demo中
將原來有flutter跳轉flutter頁面方式由openPage方式改為Router方式。
修改後的效果
目前已經改造的程式碼已提交給flutter_boost~~希望能幫到大家~