资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

flutter插件交互,flutter插件和安卓原生交互

自定义Plugin插件,Native和flutter传参相互交互

1 File-New Flutter Project -Flutter-next选择 project type(Android studio不同版本会有所差异)

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站建设、淇县网络推广、小程序开发、淇县网络营销、淇县企业策划、淇县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供淇县建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

参考链接:

2.1本地引入

这里plugin是flutter module引入使用,如果想project引用其实可以直接在.android下面创建插件

2.2远程引用

Flutter 使用插件实现双屏交互

本文将为大家讲解如何通过pub库插件快速实现Flutter应用在双屏Android设备上交互通信。

插件地址: flutter_subscreen_plugin

双屏插件实现原理: FlutterPlugin 实现双屏

主屏上的UI,我们添加一个按钮,点击生成一个随机数,发送给副屏显示,用于验证主屏与副屏的通信交互:

副屏ui上我们在initState中监听主屏给副屏的消息流,并将监听到的数据展示在文本上:

完成上述步骤,简单的demo就做好了,如下是demo在实体设备的运行效果图:

flutter 插件开发

new flutter project,选择Flutter Plugin,next,输入插件名,包名,运行平台及编写语言,finish!

如上图,笔者的插件名为log_plugin,选用Android,java语言开发

在自动打开和插件名同名的dart文件,声明要使用其他语言的方法,本例使用java 语言实现Android原生的log输出

编辑 android/src/main/java/com/whh/log_plugin/LogPlugin.java

在onMethodCall方法中,区别声明方法名,以实现该方法逻辑

至此,简单的插件开发完成,接下来测试

example是插件测试工程,打开其中的main.dart

打开已有的或者新建一个flutter app project,在其pubspec.yaml引入插件

使用pub get 关联到插件

详见官网文档

此文为 flutter 初学者记录学习过程,附上 github ,小小分享~

每天进步一点点。。。(2021-08-10)

flutter_inappbrowser和h5交互

需求,app中使用webview和h5交互,根据h5发过来的消息,在屏幕上展示flutter组件,并且可以发送消息给h5。

首先使用的组件是flutter_WebView_plugin,这个组件不能嵌套flutter组件,所以放弃这个组件。

flutter_inappbrowser 可以实现组合布局, 所以选用了此库, GitHub链接

[

Flutter(六)Android与Flutter混合开发(Hybird)

如果我们目前的项目是Android的,但是接下来我们希望部分页面可以使用Flutter进行开发,甚至我们希望在Native页面中嵌入FlutterUI组件,那么我们该如何实现呢?

假设你现在Android项目的目录的结构是这样的

这时候如果你想创建一个Flutter模块,使得Android模块和Flutter模块之间可以进行交互,我们可以通过Android Studio新建一个Flutter Module,具体过程是:File — New — New Module ,之后选择Flutter Module,指定Project Location的路径为

也就是说,最终你的项目结构会是这样的

接下来在Android Module的 build.gradle 文件中添加flutter依赖

先创建一个Flutter页面

这里比较重要的是 window.defaultRouteName 这个字段,这个字段可以接收从Native传递过来的参数 (下文我们会介绍原生传递参数的方法),也就是说通过这个字段我们就可以进行Flutter页面的路由的分发

我们可以直接在Android的 MainActivity 中启动一个 FlutterActivity ,这里的 initialRoute 方法中传递的参数就对应Flutter层的 window.defaultRouteName

注意:需要在 AndroidManifest.xml 注册 FlutterActivity

自己创建一个 FlutterAppActivity 继承自 FlutterActivity

在 MainActivity 中启动 FlutterAppActivity (另外别忘了在 AndroidManifest.xml 中注册 FlutterAppActivity )

两种启动方式的区别

如果单纯只是想打开一个Flutter页面,两种方式实际上基本没有太大区别,第一种方式也许还会更简单一点。但是,在Flutter开发中,我们往往还需要开发一些Native插件供Flutter调用,如果使用复写 FlutterActivity 的方式更有利于我们在 FlutterActivity 中注册我们的Native插件,所以实际开发中一般推荐使用第二种方式

扩展思考

initialRoute 从名称上看起来是Flutter提供给我们进行Native与Flutter交互的路由跳转的,但是实际上他就是一个字符串,我们不仅仅可以传递一个路由名称,有时候我们也可以通过这个参数传递一串JSON数据,然后在Flutter端进行解析,这样我们就可以通过这个参数做更多的事情

activity_main.xml

FrameLayout 用于承载Flutter组件

MainActivity.java

使用 FragmentManager 将 FlutterFragment 添加到 FrameLayout 容器中

运行结果

上半部分是原生的TextView,下半部分是Flutter的Text组件

本节主要介绍了Native和Flutter之间的页面跳转,以及同一个页面中Native与Flutter组件的组合。接下来会介绍如何编写Android插件与Flutter进行数据交互

Flutter插件开发

Flutter插件是Flutter调用原生能力的一种解构方式。

Flutter 会通过 MethodChannel 将数据传递给 iOS/ Android ,反之 iOS/ Android 也可以通过 MethodChannel 将数据传回给 Flutter。

在Flutter工程根目录创建plugins目录,在plugins目录下执行下面命令:

Flutter-Native

Native-Flutter


标题名称:flutter插件交互,flutter插件和安卓原生交互
网站链接:http://cdkjz.cn/article/dsispge.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220