在 Android 上執行的 Flutter 應用,無論何時,都能在 Android API 釋出的第一天就立即使用最新的 API。本頁面概述了呼叫 Android 特有 API 的可用方法。

使用現有解決方案

#

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

使用外掛

#

使用外掛通常是訪問原生 API 的最簡單方法,無論您的 Flutter 應用在哪裡執行。要使用外掛,請訪問 pub.dev 並搜尋您需要的主題。大多數原生功能,包括訪問 GPS、相機或計步器等常用硬體,都得到了強大外掛的支援。

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

並非所有原生功能都由外掛支援,尤其是在釋出後不久。在 pub.dev 上找不到所需原生功能的任何情況下,請繼續閱讀以下各節。

建立自定義解決方案

#

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

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

#

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

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

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

新增 MethodChannel

#

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

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