Flutter 与 Android 互调

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/JerryWu145/article/details/87780084

前言

在做这个小 demo 的时候,遇到了一些坑,到文章发布 坑 还是没有填好,无奈,只得用了别的方式实现了本篇文章的功能。

我这个人的缺点就是 爱钻牛角尖,哎

废话不多说,看效果图

那么,我们开始吧!

一、先用 Flutter 把界面搭建出来

我们先看界面逻辑,先不考虑功能,然后将此布局给予上层

二、定义了一些我要使用到的变量和常量

注意看这一行

扫描二维码关注公众号,回复: 5384666 查看本文章
    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

谢谢小伙伴的关注、收藏、点赞,谢谢~~

猜你喜欢

转载自blog.csdn.net/JerryWu145/article/details/87780084