新增到應用

#

如果您從頭開始編寫新應用,那麼使用 Flutter 入門會很簡單。但如果您已經有一個不是用 Flutter 編寫的應用,並且從頭開始不切實際,該怎麼辦?

在這種情況下,Flutter 可以作為模組,零散地整合到您現有的應用程式中。此功能稱為“新增到應用”。該模組可以匯入到您現有的應用中,以使用 Flutter 渲染您應用的一部分,而其餘部分可以使用現有技術進行渲染。此方法還可以利用 Dart 的可移植性和與其他語言的互操作性來執行共享的非 UI 邏輯。

目前支援 Android、iOS 和 Web 新增到應用。

Flutter 支援兩種新增應用的方式

  • 多引擎:支援 Android 和 iOS,允許執行一個或多個 Flutter 例項,每個例項渲染嵌入到宿主應用中的小部件。每個例項都是一個獨立的 Dart 程式,與其他程式隔離執行。擁有多個 Flutter 例項允許每個例項保持獨立的應用和 UI 狀態,同時佔用最少的記憶體資源。請參閱 多個 Flutter 頁面瞭解更多資訊。
  • 多檢視:支援 Web,允許建立多個 FlutterView,每個 FlutterView 渲染嵌入到宿主應用中的小部件。在此模式下,只有一個 Dart 程式,並且所有檢視和小部件都可以共享物件。

新增到應用支援整合任意大小的多個 Flutter 檢視,並支援各種用例。兩個最常見的用例是

  • 混合導航棧:應用由多個螢幕組成,其中一些由 Flutter 渲染,另一些由其他框架渲染。使用者可以自由地在螢幕之間導航,無論使用哪種框架來渲染螢幕。
  • 部分螢幕檢視:應用中的螢幕渲染多個小部件,其中一些由 Flutter 渲染,另一些由其他框架渲染。使用者可以自由地滾動和與任何小部件進行互動,無論使用哪種框架來渲染小部件。

支援的功能

#

新增到 Android 應用

#
Add-to-app steps on Android
  • 透過將 Flutter SDK 鉤子新增到 Gradle 指令碼來自動構建和匯入 Flutter 模組。
  • 將 Flutter 模組構建為通用的 Android Archive (AAR),以便整合到您自己的構建系統中,並更好地與 AndroidX 進行 Jetifier 互操作。
  • FlutterEngine API,用於獨立於 FlutterActivity/FlutterFragment 等啟動和持久化 Flutter 環境。
  • Android Studio Android/Flutter 併發編輯和模組建立/匯入嚮導。
  • 支援 Java 和 Kotlin 宿主應用。
  • Flutter 模組可以使用 Flutter 外掛與平臺進行互動。
  • 透過使用 IDE 或命令列中的 flutter attach 連線到包含 Flutter 的應用,支援 Flutter 除錯和狀態熱過載。

新增到 iOS 應用

#
Add-to-app steps on iOS
  • 透過將 Flutter SDK 鉤子新增到 CocoaPods 和 Xcode 構建階段來自動構建和匯入 Flutter 模組。
  • 將 Flutter 模組構建為通用的 iOS Framework,以便整合到您自己的構建系統中。
  • FlutterEngine API,用於獨立於 FlutterViewController 啟動和持久化 Flutter 環境。
  • 支援 Objective-C 和 Swift 宿主應用。
  • Flutter 模組可以使用 Flutter 外掛與平臺進行互動。
  • 透過使用 IDE 或命令列中的 flutter attach 連線到包含 Flutter 的應用,支援 Flutter 除錯和狀態熱過載。

請參閱我們 新增到應用 GitHub 示例程式碼庫,其中包含 Android 和 iOS 的示例專案,這些專案匯入了一個用於 UI 的 Flutter 模組。

新增到 Web 應用

#

Flutter 可以新增到任何現有的基於 HTML DOM 的 Web 應用中,這些應用可以用任何客戶端 Dart Web 框架(jasprngdartover_react 等)、任何客戶端 JS 框架(ReactAngularVue.js 等)、任何伺服器端渲染框架(DjangoRuby on RailsApache Struts 等)編寫,甚至沒有框架(被稱為“VanillaJS”)。最低要求是您的現有應用程式及其框架支援匯入 JavaScript 庫,並建立 Flutter 用於渲染的 HTML 元素。

要將 Flutter 新增到現有應用,請正常構建應用,然後按照 嵌入說明將 Flutter 檢視新增到頁面。

開始使用

#

要開始,請參閱我們的 Android 和 iOS 專案整合指南

API 用法

#

將 Flutter 整合到專案後,請參閱以下連結中的 API 用法指南

侷限性

#

移動端限制

  • 不支援多檢視模式(僅支援多引擎)。
  • 不支援將多個 Flutter 庫打包到應用中。
  • 不支援 FlutterPlugin 的外掛可能會產生意外行為,如果它們依賴於新增到應用場景中不可行的假設(例如,假設 Flutter Activity 始終存在)。
  • 在 Android 上,Flutter 模組僅支援 AndroidX 應用。

Web 端限制

  • 不支援多引擎模式(僅支援多檢視)。
  • 無法完全“關閉”Flutter 引擎。應用可以移除所有 FlutterView 物件,並確保使用常規 Dart 概念對所有資料進行垃圾回收。但是,即使引擎沒有渲染任何內容,它仍然會保持預熱狀態。