欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Flutter 和 Android 互相传递数据的实现

程序员文章站 2022-04-24 18:01:30
(一)android代码设置1,打开android studio 创建一个应用程序,包名dev.android.book 2, 创建一个myapplication ,应用在androidmanifes...

(一)android代码设置

1,打开android studio 创建一个应用程序,包名dev.android.book 2, 创建一个myapplication ,应用在androidmanifest.xml文件中的application的android:name属性上 3,创建flutterengine的实例,然后把这个实例添加到缓存的flutterengine当中 4,创建methodchannel的实例,指定一个此实例的唯一字符串,例如dev.android.book/add 5, 设置methodchannel方法回调函数,接收flutter通过methodchannel发过来的消息 6,flutter发过来的消息众多,是通过 methodcall对象中的方法名来判断 7,android端向flutter发送消息,也是通过methodchannel对象的的invokemethod方法

针对以上的各个步骤添加说明

1,很简单就是打开android studio =>file=>new project=>select a project template=>input name, package name等=>finish

2,创建bookapplication 目的是 预初始化flutterengine,启动flutter有三种方式

a,第一种方式,就是创建默认的flutterengine 比如 flutteractivity.createdefaultintent(this) b, 第二种方式,就是创建新的flutterengine 比如 flutteractivity.withnewengine().build(this) c, 第三种方式,就是使用缓存flutterengine 比如 flutteractivity.withcachedengine(engine_id).build(this)

简单解析这三种方式 a和b其实是一样的,flutteractivity.createdefaultintent其实调用的还是flutteractivity.withnewengine()方法 如下图所示,

Flutter 和 Android 互相传递数据的实现

如果在开发中不建议使用a,b方法,是因为在开发过程中,在原声当中打开flutter页面,会有一段时间的黑屏,这是因为flutterengine在初始化,初始化完成之后,就可以显示flutter页面

3,创建flutterengine的实例 有两种方法,直接传context,或者传context dartvmargs

Flutter 和 Android 互相传递数据的实现

4,创建methodchannel的实例,提供两种构造方法 messenger和name, message和name 和 methodcodec

Flutter 和 Android 互相传递数据的实现

5,设置methodchannel方法的回调,接收flutter传过来的内容,提供一个参数 methodcallhandler

Flutter 和 Android 互相传递数据的实现

6,flutter传过来的值各种各样,是通过接口 methodcallhandler

Flutter 和 Android 互相传递数据的实现

methodcallhandler里面的抽象方法onmethodcall来区分,onmethodcall方法里面有两个参数 methodcall包含传过来参数的一些信息 比如方法名,参数等信息,

Flutter 和 Android 互相传递数据的实现

result表示成功或者失败的一些回调信息

Flutter 和 Android 互相传递数据的实现

7,android端向flutter端发送消息,是通过注册的methodchannel 调用invokemethod方法,有两个参数,方法的名字,和参数

Flutter 和 Android 互相传递数据的实现

c,建议使用这种提前初始化flutterengine的方法,使用过程中,页面几乎没有停顿打开flutter页面,所以要在application中提前初始化 初始化代码如下

Flutter 和 Android 互相传递数据的实现

(二)flutter代码设置

1,打开vscode 创建一个应用程序,包名my_flutter 2,创建methodchannel的实例,指定一个此实例的唯一字符串,例如dev.android.book/add 3, 设置methodchannel方法回调函数,接收flutter通过methodchannel发过来的消息 4,android发过来的消息众多,是通过 methodcall对象中的方法名来判断 5,android端向flutter发送消息,也是通过methodchannel对象的的invokemethod方法

针对以上的各个步骤添加说明

1,创建一个flutter model,最后要作为依赖添加到原声代码当中,通过命令 flutter create -t module --org com.flutter my_flutter,执行完成之后如图所示

Flutter 和 Android 互相传递数据的实现

2,在所在的类中直接初始化 methodchannel ,比如 final _channel = methodchannel(channel_name); 参数是一个唯一的字符串,这个字符串必须和android端中的字符串保持一致

Flutter 和 Android 互相传递数据的实现

3,给methodchannel设置方法调用回调 ,参数和android端基本上一致

Flutter 和 Android 互相传递数据的实现

4,android端发送过来的消息 也是通过 methodcall来判断,可以更具方法名来判断

Flutter 和 Android 互相传递数据的实现

5,flutter端向android端发送消息,也是通过注册的methodchannel调用invokemethod,发送消息

Flutter 和 Android 互相传递数据的实现

(三)向android工程中引入刚才创建的flutter工程

在android工程中的settings.gradle中添加如下代码

Flutter 和 Android 互相传递数据的实现

然后在依赖当中添加flutter工程模块

Flutter 和 Android 互相传递数据的实现

完成以上步骤,就完成了向已有的android工程中添加flutter模块,以及android端和flutter端数据是怎么传递的。

到此这篇关于flutter 和 android 互相传递数据的实现的文章就介绍到这了,更多相关flutter android 互相传递数据内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!