0
点赞
收藏
分享

微信扫一扫

Flutter 之原生混合开发,kotlinmap操作符

IT影子 2022-01-30 阅读 53

开始之前,我们需要了解一下 flutter 的四种项目结构

  • application:纯 flutter 应用

  • plugin:基于原生的 flutter 插件

  • package:纯 dart 插件

  • module:原生上集成 flutter 模块

一、将 flutter 集成到 Android 项目


在原生应用的目录下运行命令:

会在目录下面生成如下文件: image.png 我们需要将生成 flutter module 集成进我们的 native 应用,集成方法有两种:

  • aar 依赖

  • 源码依赖

1、flutter module 集成

1、aar 依赖

在 flutter_lib 目录下,我们运行命令:

很贴心的是,flutter 会在命令行中告诉我们如何在原生应用中去集成 aar image.png

优点:

  • 依赖一个包含 Flutter 产物的 aar 包,这个的好处就是其他不开发 flutter 的同学可以不用配置 flutter 环境,它和其他模块包无异

2、源码依赖

打开原生项目的 setting.gradle 文件:

include ‘:app’

rootProject.name = “NativeToFlutter”

// 加入如下代码

setBinding(new Binding([gradle: this]))

evaluate(new File(

‘flutter_lib/.android/include_flutter.groovy’

))

include ‘:flutter_lib’

在 app 项目的 build.gradle 依赖 flutter module 模块

dependencies {

implementation project(’:flutter’)

}

缺点:

  • 需要 flutter 环境,并且各个开发人员环境不一致,导致集成因为版本不一致报各种错误

2、原生接入 flutter 页面

flutter 依赖提供了 FlutterActivity 来直接加载 flutter 页面,我们只需要在清单文件中配置该 Activity :

<activity

android:name=“io.flutter.embedding.android.FlutterActivity”

android:theme="@style/LaunchTheme"

android:configChanges=“orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode”

android:hardwareAccelerated=“true”

android:windowSoftInputMode=“adjustResize”

/>

在需要打开 flutt
er 页面的地方 startActivity 即可:

val intent = FlutterActivity

.withNewEngine()

// 背景颜色,透明 or 不透明

.backgroundMode(FlutterActivityLaunchConfigs.BackgroundMode.transparent)

// 指定跳转的路由 home 页面

.initialRoute(“home”)

.build(this)

startActivity(intent)

3、原生指定跳转 Flutter 页面

Flutter 提供 initialRoute 来供原生层跳到 flutter 对应的指定路由页面,官方解释,该路由是有限制的:

所以,我们必须使用 withNewEngine 创建新的引擎来打开一个页面:

val intent = FlutterActivity

.withNewEngine()

// 指定跳转到 home 路由页面

.initialRoute(“home”)

.build(this)

startActivity(intent)

确选择入口的。

所以,我们必须使用 withNewEngine 创建新的引擎来打开一个页面:

val intent = FlutterActivity

.withNewEngine()

// 指定跳转到 home 路由页面

.initialRoute(“home”)

.build(this)

startActivity(intent)

举报

相关推荐

05、JavaScript之操作符

0 条评论