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