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 源码的执行流程来实现的,这还是需要官方开出相应的方法来。