将 Flutter 集成到现有应用
集成到现有应用
有时候,用 Flutter 一次性重写整个已有的应用是不切实际的。对于这些情况,Flutter 可以作为一个库或模块,集成进现有的应用当中。模块引入到您的 Android 或 iOS 应用(当前支持的平台)中,以使用 Flutter 来渲染一部分的 UI,或者仅运行多平台共享的 Dart 代码逻辑。
仅需几步,你就可以将高效而富有表现力的 Flutter 引入您的应用。
Add-to-app 支持将多个 Flutter 实例附加到任意大小的视图上。适用于混合栈应用在导航到原生页面和 Flutter 页面的情况,也适用于一个页面有原生视图和 Flutter 视图的情况等混合栈应用。
多个 Flutter 实例会帮助每个实例保持独立的应用和 UI 状态,同时使用最少的内存资源。请多详细内容,请参考文档: 多个 Flutter 实例。
已支持的特性
集成到 Android 应用

-
在 Gradle 脚本中添加一个自动构建并引入 Flutter 模块的 Flutter SDK 钩子。
-
将 Flutter 模块构建为通用的 Android Archive (AAR) 以便集成到您自己的构建系统中,并提高 Jetifier 与 AndroidX 的互操作性;
-
FlutterEngine
API 用于启动并持续地为挂载FlutterActivity
或FlutterFragment
提供独立的 Flutter 环境; -
Android Studio 的 Android 与 Flutter 同时编辑,以及 Flutter module 创建与导入向导;
-
支持了 Java 和 Kotlin 为宿主的应用程序;
-
Flutter 模块可以通过使用 Flutter plugins 与平台进行交互。
-
支持通过从 IDE 或命令行中使用
flutter attach
来实现 Flutter 调试与有状态的热重载。
集成到 iOS 应用

-
在 Xcode 的 Build Phase 以及 CocoaPods 中,添加一个自动构建并引入 Flutter 模块的 Flutter SDK 钩子。
-
将 Flutter 模块构建为通用的 iOS Framework 以便集成到您自己的构建系统中;
-
FlutterEngine
API 用于启动并持续地为挂载FlutterViewController
以提供独立的 Flutter 环境; -
支持了 Objective-C 和 Swift 为宿主的应用程序;
-
Flutter 模块可以通过使用 Flutter plugins 与平台进行交互;
-
支持通过从 IDE 或命令行中使用
flutter attach
来实现 Flutter 调试与有状态的热重载。
查看 add-to-app GitHub 示例仓库 中在 iOS 和 Android 平台上引入 Flutter module 的示例项目。
开始
第一步,查看以下工程集成指南
API 用法
将 Flutter 集成进您的工程后,可以查看以下 API 使用指南
已知限制
-
不支持将多个 Flutter 库(Flutter 模块)同时打包进一个应用。
-
不支持
FlutterPlugin
的插件如果在 add-to-app 进行一些不合理的假设(例如假设 Flutter 的Activity
始终存在),可能会出现意外行为。 -
Android 平台的 Flutter 模块仅支持适配了 AndroidX 的应用。