Flutter与Android原生简单交互
首先简单说一下我所需要用flutter与原生做的交互操作:原生向flutter传一个参数String
由于小白出身,安卓原生基本不会,从网上找的资料又大多数不全,里面有一些细节没有体现出来(怀疑是因为自己的水平太低,且flutter更新的比较快,与大神的教程有一些出入),导致小白水平的我踩了两天的坑
献上资料:
1.最先看的,大神写的很好,简单易懂,但是里面有几个重要的细节没有提(下面会提到)
https://kevinwu.cn/p/964c6c3/#%E6%96%B0%E5%BB%BAFlutter-Module
2.后来查的资料,大哥写的也很好,里面提到了几个坑,
https://blog.csdn.net/Android_SE/article/details/92654464
献上效果图:
初步完成,还有许多问题没有解决,比如原生Appbar没有取消,传参只传了一个,打包时候flutter会报错 couldn't find "libflutter.so"(以后会继续改进本文章)
效果图步骤:
第一步:分别建立Android项目,建立flutter module
具体步骤看上面大神的,里面需要注意的是:这两个项目必须是同一父目录
贴图:
同一父目录第二步:Android里面引入flutter
在建立的Android工程的settings.gradle中加入以下代码,这里需要注意的是:在Android studio里面,Binding会报红,这里不用管他,同步之后就好了(ps:这个纠结了好久)
```
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'flutter_module2/.android/include_flutter.groovy'
))
```
其中settingsDir.parentFile表示当前目录的父级目录,flutter_module2是前面所建立的Flutter Module目录,f后面的 /.android/include_flutter.groovy 照写就行。
同步之后的效果图:
效果图第三步,在Application Module的Build.gradle中依赖刚刚引入的library:
```
implementation project(':flutter')
```
这里需要注意的是,引入之后,同步的时候,会报错:
报的错误 错误图这个错误是关于minSdkVersion的,原因是,native项目的minSdkVersion不能小于Flutter模块的minSdkVersion。解决方案就是把native项目的minSdkVersion的值修改为大于或者等于flutter模块的minSdkVersion的值,这里修改成16即可(建立Android项目时候默认的是15,即Android4.0.3,如果需要详细了解,请参考:https://ask.dcloud.net.cn/article/193)
效果图第四步:native项目必须使用Java 8,否则不让运行。所以我们需要在app目录下的build.gradle文件中添加如下代码:
```
android {
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
```
第五步:原生调用flutter的两种方式,具体参考大神的就行
这里需要注意的是,Flutter可能会报红,首先,这个Flutter是大写,emmm具体操作忘了,好像是执行第三步第四步之后之后就不报红了。下次来补上。
最后一个问题,识别不了 getLifecycle() 方法,原因是没有import class,用alt+enter挨个加上就好了,如图
----------------------------------------------分割线------------------------------------------------------2019.8.30--------------------------------------------------------