跳到主內容

呼叫 JetPack API

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

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

使用現有解決方案

#

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

使用外掛

#

使用外掛通常是訪問原生 API 的最簡單方法,無論您的 Flutter 應用執行在何處。要使用外掛,請訪問 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 在編寫此膠合程式碼時會很有幫助。

有關將 MethodChannel 新增到您的 Flutter 應用的完整指南,請參閱 MethodChannels 文件