channel肯定可以的,boost目前默認應該只支持flutter-flutter的回傳,flutter-native和native-flutter可以自己實現
android:
FlutterBoost.singleton.open('url').then((result)=>{...}) flutter 調用 Android 如果需要返回值開啟 activity的時候用 startActivityforResult 然后 關閉頁面activity的時候 setResult 就可以在flutter的頁面拿到返回值
router打開native的時候startActivityForResult
然后native頁面返回的時候setResult就行了
Map map = new HashMap<String, String>();
map.put("a", "a");
Intent intent = getIntent().putExtra(IFlutterViewContainer.RESULT_KEY, (Serializable) map);
setResult(0, intent);
ios:
思路大致是當 flutter 調起原生的時候,flutter 的回調會存在 _callbackCache 這個字典里。然后手動調用 [BoostMessageChannel didInitPageContainer] 將原先存在 _callbackCache 里的回調轉接給 _pageResultCallbacks。
最后手動調用 [FlutterBoostPlugin close] 來取出 _pageResultCallbacks 的對應的 flutter 回調並執行。這純粹是依靠 boost 源碼的執行流程來實現的,這還是需要官方開出相應的方法來。