在上一篇博客 【Flutter】Flutter 混合开发 ( 关联 Android 工程与 Flutter 工程 | 安卓页面中嵌入 Flutter 页面 | 安卓中启动 Flutter 页面 ) 中 , 创建 Android 工程 , 并将两个工程进行关联 , 在 Android 的 Activity 界面中嵌入了 FlutterFragment , 在 Android 中启动了 FlutterActivity ;
本篇博客介绍如何从 Android 端向 Flutter 端传递数据 ;
Flutter 混合开发集成步骤 :
调用 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 " ;
与 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 " ;
参考资料 :
重要的专题 :
博客源码下载 :
- **Flutter Module 工程 :** [https://github.com/han1202012/flutter\_module](https://github.com/han1202012/flutter_module)
- **Android 应用 :** [https://github.com/han1202012/flutter\_native](https://github.com/han1202012/flutter_native)
- **注意 : 上面两个工程要放在同一个目录中 , 否则编译不通过 ;**