【Flutter】修改flutter_boost,相容iOS側滑的一個解決方案

gzhongcheng發表於2019-06-06

起因:專案中使用了flutter_boost,發現側滑時直接將flutter的整個VC給pop掉了,demo中flutter程式碼跳轉到新的頁面也是使用openPage的方式開啟,因此沒有這個問題,但是我們不希望每一個新的flutter都使用openPage方式開啟(一是每次都新建一個VC浪費效能,二是會有閃爍的情況出現),經過幾天時間不斷驗證改造,終於可以算是階段性地解決了這個問題,在此做個記錄。

具體方案

先看改造後增加的流程:

【Flutter】修改flutter_boost,相容iOS側滑的一個解決方案

下面是具體增加的點

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】修改flutter_boost,相容iOS側滑的一個解決方案

目前已經改造的程式碼已提交給flutter_boost~~希望能幫到大家~

相關文章