Skip to main content

调用 JetPack API

在 Android 系统上运行的 Flutter 应用始终可以使用 Android 系统发布的第一天就可用的最新 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 应用的完整指南,请参阅MethodChannel 文档