将 Flutter 添加到现有应用

添加至应用

有时,不可能一次性用 Flutter 重写整个应用程序。对于这种情况,Flutter 可以作为库或模块分批集成到现有应用程序中。然后,该模块可以导入到 Android 或 iOS(当前支持的平台)应用中,以用 Flutter 渲染应用 UI 的一部分。或者,仅运行共享的 Dart 逻辑。

只需几个步骤,即可将 Flutter 的生产力和表现力引入自己的应用。

add-to-app 功能支持集成任何屏幕尺寸的多个实例。这可以帮助解决一些场景,例如混合原生和 Flutter 屏幕的混合导航堆栈,或具有多个部分屏幕 Flutter 视图的页面。

拥有多个 Flutter 实例允许每个实例在使用最少内存资源的同时保持独立的应用程序和 UI 状态。请参阅 多个 Flutters 页面了解更多信息。

支持的功能

添加到 Android 应用程序

Add-to-app steps on Android
  • 通过将 Flutter SDK 钩子添加到 Gradle 脚本,自动构建和导入 Flutter 模块。
  • 将 Flutter 模块构建为通用 Android 存档 (AAR),以集成到自己的构建系统中,并提高与 AndroidX 的 Jetifier 互操作性。
  • FlutterEngine API,用于启动和持久化 Flutter 环境,而无需附加 FlutterActivity/FlutterFragment 等。
  • Android Studio Android/Flutter 联合编辑和模块创建/导入向导。
  • 支持 Java 和 Kotlin 主机应用。
  • Flutter 模块可以使用 Flutter 插件 与平台交互。
  • 通过使用 flutter attach 从 IDE 或命令行连接到包含 Flutter 的应用,支持 Flutter 调试和有状态热重载。

添加到 iOS 应用程序

Add-to-app steps on iOS
  • 通过将 Flutter SDK 钩子添加到 CocoaPods 和 Xcode 构建阶段,自动构建和导入 Flutter 模块。
  • 将 Flutter 模块构建为通用 iOS 框架,以集成到自己的构建系统中。
  • FlutterEngine API,用于独立于附加 FlutterViewController 启动和持久化 Flutter 环境。
  • 支持 Objective-C 和 Swift 主机应用。
  • Flutter 模块可以使用 Flutter 插件 与平台交互。
  • 通过使用 flutter attach 从 IDE 或命令行连接到包含 Flutter 的应用,支持 Flutter 调试和有状态热重载。

请参阅我们的 add-to-app GitHub 样例存储库,了解在 Android 和 iOS 中导入 Flutter UI 模块的样例项目。

开始

要开始,请参阅我们的 Android 和 iOS 项目集成指南

API 使用

将 Flutter 集成到项目后,请参阅以下链接中的 API 使用指南

限制

  • 不支持将多个 Flutter 库打包到一个应用程序中。
  • 如果插件不支持 FlutterPlugin,并且它们在 add-to-app 中做出了站不住脚的假设(例如,假设始终存在 Flutter Activity),则它们可能会出现意外行为。
  • 在 Android 上,Flutter 模块仅支持 AndroidX 应用程序。