文章目录
前言
一、FlutterFragment 数据传递
二、FlutterActivity 数据传递
三、相关资源
前言
在上一篇博客 【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 ) 中 , 创建 Android 工程 , 并将两个工程进行关联 , 在 Android 的 Activity 界面中嵌入了 FlutterFragment , 在 Android 中启动了 FlutterActivity ;
本篇博客介绍如何从 Android 端向 Flutter 端传递数据 ;
Flutter 混合开发集成步骤 :
① 在 Android Studio 中创建 Flutter Module ;
② 为 Native 应用添加 Flutter Module 依赖 ;
③ 在 Native 应用 ( Android / iOS 应用 ) 中 , 调用 Flutter Module 模块 ;
④ 编写 Flutter Module 中的 Dart 代码 ;
⑤ 运行 Flutter 混合应用 ;
⑥ 项目的 热重启 / 重新加载 ;
⑦ 调试 Dart 代码 ;
⑧ 应用发布 ;
一、FlutterFragment 数据传递
调用 FlutterFragment.createDefault() 创建的 FlutterFragment , 没有传递任何数据 ;
调用 FlutterFragment.withNewEngine() 可以获取创建的 Flutter 引擎 , 通过该 Flutter 引擎 , 可以设置 initialRoute 参数 ;
设置代码如下 :
findViewById(R.id.flutter1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); // 使用该方法创建的 Fragment 没有传递数据 //FlutterFragment.createDefault() // 打开默认界面 //fragmentTransaction.replace(R.id.frame, FlutterFragment.createDefault()); // 创建 FlutterFragment fragmentTransaction.replace(R.id.frame, FlutterFragment.withNewEngine().initialRoute("Android 中嵌入 FlutterFragment").build()); fragmentTransaction.commit(); } });
Flutter 中接收到数据后 , 将传入的数据设置为标题 ;
执行效果如下 : Flutter 界面的标题变为 " Android 中嵌入 FlutterFragment " ;
二、FlutterActivity 数据传递
与 FlutterFragment 类似 , FlutterActivity 也可以调用 FlutterActivity.withNewEngine() 获取一个 Flutter 引擎 ;
通过该 Flutter 引擎 , 可以设置 initialRoute 参数 ;
设置代码如下 :
findViewById(R.id.flutter2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = FlutterActivity .withNewEngine() .initialRoute("Android 中启动 FlutterActivity") .build(MainActivity.this); intent.putExtra("initParams", "Android 中启动 FlutterActivity2"); startActivity(intent); } });
执行效果如下 : Flutter 界面的标题变为 " Android 中启动 FlutterActivity " ;