【Flutter】Flutter 混合开发 ( 安卓端向 Flutter 传递数据 | FlutterFragment 数据传递 | FlutterActivity 数据传递 )

简介: 【Flutter】Flutter 混合开发 ( 安卓端向 Flutter 传递数据 | FlutterFragment 数据传递 | FlutterActivity 数据传递 )

文章目录

前言

一、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 " ;



image.png





二、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 " ;


image.png




目录
相关文章
|
3月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
38 0
|
4月前
|
XML 物联网 API
Android Ble蓝牙App(五)数据操作
Android Ble蓝牙App(五)数据操作
|
4月前
|
数据库 Android开发 开发者
Android Studio入门之内容共享ContentProvider讲解以及实现共享数据实战(附源码 超详细必看)
Android Studio入门之内容共享ContentProvider讲解以及实现共享数据实战(附源码 超详细必看)
39 0
|
7天前
|
Android开发 开发者
Android网络和数据交互: 请解释Android中的AsyncTask的作用。
Android's AsyncTask simplifies asynchronous tasks for brief background work, bridging UI and worker threads. It involves execute() for starting tasks, doInBackground() for background execution, publishProgress() for progress updates, and onPostExecute() for returning results to the main thread.
9 0
|
7天前
|
网络协议 安全 API
Android网络和数据交互: 什么是HTTP和HTTPS?在Android中如何进行网络请求?
HTTP和HTTPS是网络数据传输协议,HTTP基于TCP/IP,简单快速,HTTPS则是加密的HTTP,确保数据安全。在Android中,过去常用HttpURLConnection和HttpClient,但HttpClient自Android 6.0起被移除。现在推荐使用支持TLS、流式上传下载、超时配置等特性的HttpsURLConnection进行网络请求。
8 0
|
21天前
|
XML Java Android开发
Android每点击一次按钮就添加一条数据
Android每点击一次按钮就添加一条数据
22 1
|
1月前
|
存储 Android开发 C++
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
【Android 从入门到出门】第五章:使用DataStore存储数据和测试
31 3
|
2月前
|
JavaScript Java 数据安全/隐私保护
安卓逆向 -- POST数据解密
安卓逆向 -- POST数据解密
25 2
|
3月前
|
移动开发 前端开发 JavaScript
探究移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动端混合开发技术在移动应用开发领域日益流行,为开发者提供了更高效的跨平台开发方案。本文将比较三种主流混合开发技术:React Native、Weex和Flutter,从性能、生态系统和开发体验等方面进行评估,以帮助开发者在选择适合自己项目的技术时做出明智的决策。
|
3月前
|
移动开发 前端开发 weex
React Native、Weex、Flutter 混合开发技术的比较与选择
移动应用已经成为人们日常生活中不可或缺的一部分,而混合开发技术也随之崛起并逐渐成为主流。本文将比较 React Native、Weex 和 Flutter 三种混合开发技术,并探讨它们各自的优缺点,以及如何根据项目需求做出选择。
52 1