呼叫 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 執行緒呼叫它。在大多數情況下,ffigen 或 jnigen 有助於編寫此粘合程式碼。
有關從 Flutter 應用直接呼叫原生程式碼的完整指南,請參閱 FFI 文件。
在接下來的幾個月中,Dart 團隊希望透過直接支援使用 FFI 方法呼叫原生 API 來簡化此過程,屆時開發人員將無需編寫任何粘合程式碼。
新增 MethodChannel
#
MethodChannel 是 Flutter 應用呼叫任意原生程式碼的另一種方式。與前述 FFI 解決方案不同,MethodChannel 始終是非同步的,根據您的用例,這可能重要也可能不重要。與 FFI 和直接呼叫原生程式碼一樣,使用 MethodChannel 需要少量的粘合程式碼將 Dart 物件轉換為原生物件,然後再轉換回來。在大多數情況下,pkg:pigeon 有助於編寫此粘合程式碼。
有關向 Flutter 應用新增 MethodChannel 的完整指南,請參閱 MethodChannel 文件。