美文网首页
Flutter与Android原生简单交互

Flutter与Android原生简单交互

作者: 文档助手_0e75 | 来源:发表于2019-09-29 12:05 被阅读0次

    首先简单说一下我所需要用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--------------------------------------------------------

    相关文章

      网友评论

          本文标题:Flutter与Android原生简单交互

          本文链接:https://www.haomeiwen.com/subject/oqaoectx.html