最近开始学习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,不止能传输字符串。
源码下载:
未完待续。。。
如果每次修改完dart文件都要编译那不是要哭了,flutter是支持热更新的,待我去挖掘一波~~~