前言
在做这个小 demo 的时候,遇到了一些坑,到文章发布 坑 还是没有填好,无奈,只得用了别的方式实现了本篇文章的功能。
我这个人的缺点就是 爱钻牛角尖,哎
废话不多说,看效果图
那么,我们开始吧!
一、先用 Flutter 把界面搭建出来
我们先看界面逻辑,先不考虑功能,然后将此布局给予上层
二、定义了一些我要使用到的变量和常量
注意看这一行
static const androidplatform = const MethodChannel("Flutter_love_android");
这行其实作用就是声明了 链接 Android 原生的 MethodChannel
当然了,里面的内容随意,你看我写的多随意
而真正的调用逻辑是
androidplatform.invokeMethod('showToast');
对 就是 invokeMethod
这个方法
当然这个方法的使用还有「带参数的使用方法」
androidplatform.invokeMethod('showToast', {'msg': '来自flutter的问候'});
androidplatform.invokeMethod('showToast', {'index': (count++)%7});
三、实现跳转页面,显示从 Android 获得的图片链接
再来看下方法的实现
ok,到此,Flutter 的逻辑就基本走完了,现在来看下 Android 的逻辑
四、切换到 Android 项目
这里,是我浪费了点时间的一个坑,我以为我可以直接在 Flutter 的项目结构下去更改 Android 的项目,结果证明我还是 too young 了,好了,说下我的方法,我是直接切换到了 Android 的项目结构,如下图
这样就可以进入 Android 的结构了
五、定义和 Flutter 页面一致的常量
很简单,你想实现相互调用,那么肯定得有暗号
吧
六、定义吐司的方法
七、处理 Flutter 调用 Android 的逻辑
这里是通过
new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
new MethodChannel.MethodCallHandler() {
@Override
public void onMethodCall(MethodCall methodCall, MethodChannel.Result result) {...}})
来实现的
其中 MethodCall
能够判断 Flutter 传递过来什么名称的参数,得到参数的内容等
而 MethodChannel.Result
则能够返回结果给 Flutter
上面的截图就是通过这两个类来实现的逻辑
八、实现获取Banner 数据的逻辑
定义依赖
定义 Bean
定义网络接口
实现 RetrofitHelper
通过 jakewharton
封装的rxrelay
结合rxjava2
实现 rxbus
完工,总结
Android & Flutter 互调
MethodChannel 在 Flutter 及 Android 中的使用
Flutter 页面跳转
RxBus 封装
Bingo
谢谢小伙伴的关注、收藏、点赞,谢谢~~
网友评论