首先简单说一下我所需要用flutter与原生做的交互操作:原生向flutter传一个参数String

由于小白出身,安卓原生基本不会,从网上找的资料又大多数不全,里面有一些细节没有体现出来(怀疑是因为自己的水平太低,且flutter更新的比较快,与大神的教程有一些出入),导致小白水平的我踩了两天的坑

献上资料:

1.最先看的,大神写的很好,简单易懂,但是里面有几个重要的细节没有提(下面会提到)

2.后来查的资料,大哥写的也很好,里面提到了几个坑,

献上效果图:

初步完成,还有许多问题没有解决,比如原生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--------------------------------------------------------