flutter Android混合开发交互(1)

今天看了一天的flutter 跟Android 的交互。奈何渣渣,ios又不会,只能见一步走一步。就当是记录下学习过程

1.在原生中嵌入flutter页面。光这个就让我折腾两天。主要是flutter升级到1.17版本后,之前方式已经不能用了。现在主要是通过flutterActivity以及生成flutterFragment方式。

但是我觉得还是用flutterFragment方式稳妥点。毕竟flutterActivity不是自己人啊。

具体使用:

FlutterEngine flutterEngine =new FlutterEngine(this);

flutterEngine.getNavigationChannel().setInitialRoute("route1?{\"name\":\"这都是什么啊\"}");

flutterEngine.getDartExecutor().executeDartEntrypoint(

DartExecutor.DartEntrypoint.createDefault()

);

FlutterEngineCache.getInstance().put("my_engine_id",flutterEngine);

FlutterFragment flutterFragment = FlutterFragment.withCachedEngine("my_engine_id").build();

getSupportFragmentManager().beginTransaction().add(R.id.fl_container,flutterFragment).commit();

这里的setInitialRoute("route1?{\"name\":\"这都是什么啊\"}"); 就是原生传数据给flutter。

那flutter那边怎么接收?route1 就是表示要跳转的flutter页面。

void main(){

runApp(_widgetForRoute(window.defaultRouteName));

}

Widget_widgetForRoute(String url) {

String route = _getRouteName(url);

  Map params = _getParamsStr(url);

  switch (route) {

case 'route1':

return

MaterialApp(

home:Center(

child:

Text('route: $route,参数为$params', textDirection: TextDirection.ltr),

        ),

      );

    default:

return MaterialApp(

home:Center(

child:

Text('Unknown route: $route', textDirection: TextDirection.ltr),

        ),

      );

  }

}

这样就想跳哪个界面就跳哪个界面了。_getRouteName()以及_getParamsStr(),只是对原生传递过来的「"route1?{\"name\":\"这都是什么啊\"}" 通过“?”进行切割而已。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容