将Flutter以module集成到Android工程中

1,150 阅读2分钟

最近开始学习Flutter,俗话说好眼球不如烂笔头,学了不用等于没学,燥起来~

将现有的Android 工程转化为纯Flutter工程显然对于初学者的我来说有点难度,不如先退而求其次,将Flutter以module集成到Android工程中。

开发环境:

Android Stuiod:


Flutter:

flutter --version
Flutter 1.7.8+hotfix.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 20e59316b8 (6 days ago) • 2019-07-18 20:04:33 -0700
Engine • revision fee001c93f
Tools • Dart 2.4.0

熟练前先建个空白工程练手

创建android工程



此处由于我已经将buildtool升级到最新版29.0.1,所以直接使用了androidx库。

创建Flutter module

android工程已经默认引入了androidx库,所以flutter也需要使用androix库。但是目前android studio创建flutter module并不能设置使用androidx库,只能使用命令行方式了:

flutter create -t module --androidx flutter_module_first


将flutter module引入android工程



选择刚才命令行创建的flutter module的路径


然后点击sync project


此时可以看到module已经引入


运行程序

点击运行。。。报错了


此时需要修改app下的build.gradle文件


此时再点击运行程序,一切正常。

既然已经将flutter module引入了,只是运行正常显然无法满足我的欲望。下面正菜来了

android 和 flutter 通信

此处关于flutter中各种通信channel的分类和原理暂时不做解释,先走一波代码

布局如下:


EditText 显示接收到的flutter传过来的数据

Button 点击后将手动输入 EditText内的数据传递给flutter,并在flutter内显示

LinearLayout 用来显示Flutterview

android 代码内添加BasicMessageChannel


 flutter 内添加BasicMessageChannel


编译flutter module


运行app测试效果


可以看到flutter和android互传数据完美接收。

当然BasicMessageChannel有非常强大的api,不止能传输字符串。

源码下载:

github.com/Ctergz/Andr…

github.com/Ctergz/flut…

未完待续。。。

如果每次修改完dart文件都要编译那不是要哭了,flutter是支持热更新的,待我去挖掘一波~~~