將 Flutter 整合到現有應用

整合到現有應用

有時候,用 Flutter 一次性重寫整個已有的應用是不切實際的。對於這些情況,Flutter 可以作為一個函式庫或模組,整合進現有的應用當中。模組引入到您的 Android 或 iOS 應用(當前支援的平台)中,以使用 Flutter 來渲染一部分的 UI,或者僅執行多平臺共享的 Dart 程式碼邏輯。

僅需幾步,你就可以將高效而富有表現力的 Flutter 引入您的應用。

Add-to-app 支援將多個 Flutter 例項附加到任意大小的檢視上。適用於混合棧應用在導航到原生頁面和 Flutter 頁面的情況,也適用於一個頁面有原生檢視和 Flutter 檢視的情況等混合棧應用。

多個 Flutter 例項會幫助每個例項保持獨立的應用和 UI 狀態,同時使用最少的記憶體資源。請多詳細內容,請參考文件: 多個 Flutter 例項

已支援的特性

整合到 Android 應用

Add-to-app steps on Android
  • 在 Gradle 指令碼中新增一個自動建構並引入 Flutter 模組的 Flutter SDK 鉤子。

  • 將 Flutter 模組建構為通用的 Android Archive (AAR) 以便整合到您自己的建構系統中,並提高 Jetifier 與 AndroidX 的互操作性;

  • FlutterEngine API 用於啟動並持續地為掛載 FlutterActivityFlutterFragment 提供獨立的 Flutter 環境;

  • Android Studio 的 Android 與 Flutter 同時編輯,以及 Flutter module 建立與匯入嚮導;

  • 支援了 Java 和 Kotlin 為宿主的應用程式;

  • Flutter 模組可以透過使用 Flutter plugins 與平台進行互動。

  • 支援透過從 IDE 或命令列中使用 flutter attach 來實現 Flutter 除錯與有狀態的熱重載。

整合到 iOS 應用

Add-to-app steps on 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 的應用。