跳到主內容

呼叫 JetPack API

從 Dart 程式碼中使用最新的 Android API

無論如何,在 Android 上執行的 Flutter 應用始終可以在 Android 釋出最新 API 的第一時間使用它們。本頁概述了呼叫 Android 特定 API 的可用方法。

使用現有解決方案

#

在大多數情況下,您可以使用外掛(如下一節所示)來呼叫原生 API,而無需自己編寫任何自定義的樣板程式碼或粘合程式碼。

使用外掛

#

無論您的 Flutter 應用執行在何處,使用外掛通常都是訪問原生 API 最簡單的方法。要使用外掛,請訪問 pub.dev 並搜尋您需要的主題。大多數原生功能(包括訪問 GPS、攝像頭或計步器等常見硬體)都由成熟的外掛提供支援。

有關將外掛新增到 Flutter 應用的完整指南,請參閱使用軟體包文件

並非所有原生功能都受外掛支援,特別是在剛釋出時。如果 pub.dev 上的軟體包未涵蓋您所需的原生功能,請繼續閱讀後續章節。

建立自定義解決方案

#

並非所有場景和 API 都有現成的解決方案;但幸運的是,您可以隨時新增所需的任何支援。接下來的章節介紹了從 Dart 呼叫原生程式碼的兩種不同方法。

透過 FFI 直接呼叫原生程式碼

#

呼叫原生 API 最直接、最高效的方法是透過 FFI 直接呼叫該 API。這會在編譯時將您的 Dart 可執行檔案連結到指定的任何原生程式碼,從而允許您透過少量的粘合程式碼直接從 UI 執行緒呼叫它。在大多數情況下,ffigenjnigen 有助於編寫此粘合程式碼。

有關從 Flutter 應用直接呼叫原生程式碼的完整指南,請參閱 FFI 文件

在接下來的幾個月中,Dart 團隊希望透過直接支援使用 FFI 方法呼叫原生 API 來簡化此過程,屆時開發人員將無需編寫任何粘合程式碼。

新增 MethodChannel

#

MethodChannel 是 Flutter 應用呼叫任意原生程式碼的另一種方式。與前述 FFI 解決方案不同,MethodChannel 始終是非同步的,根據您的用例,這可能重要也可能不重要。與 FFI 和直接呼叫原生程式碼一樣,使用 MethodChannel 需要少量的粘合程式碼將 Dart 物件轉換為原生物件,然後再轉換回來。在大多數情況下,pkg:pigeon 有助於編寫此粘合程式碼。

有關向 Flutter 應用新增 MethodChannel 的完整指南,請參閱 MethodChannel 文件