將 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 模組)同時打包進一個應用程式。
-
基於 Android add-to-app 的外掛必須遷移至基於
FlutterPlugin
的 新版 Android 外掛 API -
不支援
FlutterPlugin
的外掛如果在 add-to-app 進行一些不合理的假設(例如假設 Flutter 的Activity
始終存在),可能會出現意外行為。 -
Android 平台的 Flutter 模組僅支援適配了 AndroidX 的應用。